Struktury danych .NET: ArrayList, List, HashTable, Dictionary, SortedList, SortedDictionary - Szybkość, pamięć i kiedy używać każdego?

.NET ma wiele złożonych struktur danych. Niestety, niektóre z nich są dość podobne i nie zawsze jestem pewien, kiedy z nich korzystać i kiedy użyć innego. Większość moich książek w języku C # i Visual Basic mówi o nich do pewnego stopnia, ale tak naprawdę nigdy nie wchodzą w żadne prawdziwe szczegóły.

Jaka jest różnica między Array, ArrayList, List, Hashtable, Dictionary, SortedList i SortedDictionary?

Które z nich są wyliczalne (IList - czy można wykonać pętle „foreach”)? Które używają par klucz / wartość (IDict)?

Co z śladem pamięci? Prędkość wstawiania? Szybkość pobierania?

Czy są jakieś inne struktury danych, o których warto wspomnieć?

Nadal szukam więcej szczegółów na temat wykorzystania pamięci i prędkości (notacja Big-O).

questionAnswers(14)

yourAnswerToTheQuestion