title: .Net Data structures: ArrayList, List, HashTable, Dictionary, SortedList, SortedDictionary -- Speed, memory, and when to use each?
body: <p>.NET has a lot of complex data structures. Unfortunately, some of them are quite similar and I'm not always sure when to use one and when to use another. Most of my C# and VB books talk about them to a certain extent, but they never really go into any real detail.</p>
  <p>What's the difference between Array, ArrayList, List, Hashtable, Dictionary, SortedList, and SortedDictionary?</p>
  <p>Which ones are enumerable (IList -- can do 'foreach' loops)? Which ones use key/value pairs (IDict)?</p>
  <p>What about memory footprint? Insertion speed? Retrieval speed?</p>
  <p>Are there any other data structures worth mentioning?</p>
  <p>I'm still searching for more details on memory usage and speed (Big-O notation)</p>