Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Be sure to choose your Collections class carefully. Using the wrong collection can restrict your use of the collection.
Consider the following questions:
- Do you need a sequential list where the element is typically discarded after its value is retrieved?
- Do you need to access the elements in a certain order, such as first-in-first-out, last-in-first-out, or randomly?
- Queue offers first-in-first-out access.
- Stack offers last-in-first-out access.
- The rest of the collections offer random access.
- Do you need to access each element by index?
- ArrayList and StringCollection offer access to their elements by the zero-based index of the element.
- Hashtable, SortedList, ListDictionary, and StringDictionary offer access to their elements by the key of the element.
- NameObjectCollectionBase and NameValueCollection offer access to their elements by either the zero-based index or the key of the element.
- Will each element contain one value, a combination of one key and one value, or a combination of one key and multiple values?
- One value: Use any of the collections based onIList.
- One key and one value: Use any of the collections based on IDictionary.
- One key and multiple values: Use the NameValueCollection class in the System.Collections.Specialized Namespace namespace.
- Do you need to sort the elements differently from how they were entered?
- Hashtable sorts the elements by the hash code of the key.
- SortedList sorts the elements by the key, based on an IComparer implementation.
- ArrayList provides a Sort method that takes an IComparer implementation as a parameter.
- Do you need fast searches and retrieval of information?
- ListDictionary is faster than Hashtable for small collections (10 items or less).
- Do you need collections that accept only strings?
- StringCollection (based on IList) and StringDictionary (based on IDictionary) are in the System.Collections.Specialized namespace.
See Also
Creating and Manipulating Collections | System.Collections Namespace | System.Collections.Specialized Namespace