Jaka jest różnica między listą KeyValuePair a słownikiem dla tych samych typów? Czy jest odpowiedni czas, aby użyć jednego lub drugiego?
c#
dictionary
Corpsekicker
źródło
źródło
Krótko mówiąc, lista nie wymusza unikalności klucza, więc jeśli potrzebujesz tej semantyki, to powinieneś użyć.
źródło
Słownik to typ ogólny, który zawiera kolekcję par klucz-wartość. Słownik jest szybki dla operacji wyszukiwania, ponieważ wewnętrznie używa funkcji skrótu . Oznacza to, że wszystkie klucze muszą być unikalne w słowniku .
Rozważ te przykłady:
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.
Dlatego zawsze powinieneś wziąć pod uwagę co najmniej dwie rzeczy:
źródło
Lista byłaby również przydatna, gdy zależy Ci na kolejności przedmiotów.
źródło
Zgodnie z odpowiedzią Phillipa Ngana, SOAP lub innym, nie można serializować XML obiektów, które implementują IDictionary.
stąd
źródło
W usługach sieciowych SOAP dla Silverlight odkryliśmy, że Dictionary nie są serializowane. Byłaby to sytuacja, w której użyłbyś listy KeyValuePair zamiast słownika.
.
źródło
Z http://blogs.msdn.com/bclteam/archive/2004/09/03/225473.aspx :
źródło