C# Generic & Non-generic Collections
C# includes specialized classes that store series of values or objects are called collections.
There are two types of collections available in C#: non-generic collections and generic collections.
System.Collections namespace contains the non-generic collection types and
System.Collections.Generic namespace includes generic collection types.
In most cases, it is recommended to use the generic collections because they perform faster than non-generic collections and also minimize exceptions by giving compile-time errors.
C# includes the following generic collection classes in the
|List<T>||Generic List<T> contains elements of specified type. It grows automatically as you add elements in it.|
|Dictionary<TKey,TValue>||Dictionary<TKey,TValue> contains key-value pairs.|
|SortedList<TKey,TValue>||SortedList stores key and value pairs. It automatically adds the elements in ascending order of key by default.|
|Queue<T>||Queue<T> stores the values in FIFO style (First In First Out). It keeps the order in which the values were added. It provides an Enqueue() method to add values and a Dequeue() method to retrieve values from the collection.|
|Stack<T>||Stack<T> stores the values as LIFO (Last In First Out). It provides a Push() method to add a value and Pop() & Peek() methods to retrieve values.|
|Hashset<T>||Hashset<T> contains non-duplicate elements. It eliminates duplicate elements.|
|ArrayList||ArrayList stores objects of any type like an array. However, there is no need to specify the size of the ArrayList like with an array as it grows automatically.|
|SortedList||SortedList stores key and value pairs. It automatically arranges elements in ascending order of key by default. C# includes both, generic and non-generic SortedList collection.|
|Stack||Stack stores the values in LIFO style (Last In First Out). It provides a Push() method to add a value and Pop() & Peek() methods to retrieve values. C# includes both, generic and non-generic Stack.|
|Queue||Queue stores the values in FIFO style (First In First Out). It keeps the order in which the values were added. It provides an Enqueue() method to add values and a Dequeue() method to retrieve values from the collection. C# includes generic and non-generic Queue.|
|Hashtable||Hashtable stores key and value pairs. It retrieves the values by comparing the hash value of the keys.|
|BitArray||BitArray manages a compact array of bit values, which are represented as Booleans, where true indicates that the bit is on (1) and false indicates the bit is off (0).|
Let's see each type of collection next.