Estructuras de datos .NET: ArrayList, List, HashTable, Dictionary, SortedList, SortedDictionary - ¿Velocidad, memoria y cuándo usar cada una?

.NET tiene muchas estructuras de datos complejas. Desafortunadamente, algunos de ellos son muy similares, y no siempre estoy seguro de cuándo usar uno y cuándo usar otro. La mayoría de mis libros de C # y Visual Basic hablan de ellos en cierta medida, pero nunca llegan a ningún detalle real.

¿Cuál es la diferencia entre Array, ArrayList, List, Hashtable, Dictionary, SortedList y SortedDictionary?

¿Cuáles son enumerables (IList - puede hacer bucles 'foreach')? ¿Cuáles usan pares clave / valor (IDict)?

¿Qué pasa con la huella de memoria? ¿Velocidad de inserción? Velocidad de recuperación?

¿Hay alguna otra estructura de datos que valga la pena mencionar?

Todavía estoy buscando más detalles sobre el uso de memoria y la velocidad (notación Big-O).

Respuestas a la pregunta(14)

Su respuesta a la pregunta