В чем разница между списком KeyValuePair и словарем для одних и тех же типов? Есть ли подходящее время для использования того или другого?
c#
dictionary
Труп
источник
источник
Короче говоря, список не обеспечивает уникальность ключа, поэтому, если вам нужна эта семантика, вы должны использовать ее.
источник
Словарь - это универсальный тип , содержащий набор пар ключ-значение. Словарь быстр для операций поиска, потому что использует хэш-функцию внутри . Это означает, что все ключи должны быть уникальными в словаре .
Рассмотрим эти примеры:
List<KeyValuePair<int, string>> pairs = new List<KeyValuePair<int, string>>(); pairs.Add(new KeyValuePair<int, string>(1, "Miroslav")); pairs.Add(new KeyValuePair<int, string>(2, "Naomi")); pairs.Add(new KeyValuePair<int, string>(2, "Ingrid")); Dictionary<int, string> dict = new Dictionary<int, string>(); dict.Add(1, "Miroslav"); dict.Add(2, "Naomi"); dict.Add(2, "Ingrid"); // System.ArgumentException: An item with the same key has already been added.
Поэтому вы всегда должны учитывать как минимум две вещи:
источник
Список также будет полезен, когда вы заботитесь о порядке элементов.
источник
В дополнение к ответу Филиппа Нгана, SOAP или иначе, вы не можете сериализовать XML-объекты, реализующие IDictionary.
отсюда
источник
В веб-сервисах SOAP для silverlight мы обнаружили, что словарь Dictionary не сериализуется. Это может быть ситуация, когда вы использовали бы список KeyValuePair вместо словаря.
.
источник
С http://blogs.msdn.com/bclteam/archive/2004/09/03/225473.aspx :
источник