.NET Framework Class Library
System.Collections.Generic Namespace
The System.Collections.Generic namespace contains interfaces and classes that define generic collections, which allow users to create strongly typed collections that provide better type safety and performance than non-generic strongly typed collections.
Classes
| Class | Description | |
|---|---|---|
|
Comparer<T> | Provides a base class for implementations of the IComparer<T> generic interface. |
|
Dictionary<TKey, TValue> | Represents a collection of keys and values. |
|
Dictionary<TKey, TValue>.KeyCollection | Represents the collection of keys in a Dictionary<TKey, TValue>. This class cannot be inherited. |
|
Dictionary<TKey, TValue>.ValueCollection | Represents the collection of values in a Dictionary<TKey, TValue>. This class cannot be inherited. |
|
EqualityComparer<T> | Provides a base class for implementations of the IEqualityComparer<T> generic interface. |
|
HashSet<T> | Represents a set of values. |
|
KeyedByTypeCollection<TItem> | Provides a collection whose items are types that serve as keys. |
|
KeyNotFoundException | The exception that is thrown when the key specified for accessing an element in a collection does not match any key in the collection. |
|
LinkedList<T> | Represents a doubly linked list. |
|
LinkedListNode<T> | Represents a node in a LinkedList<T>. This class cannot be inherited. |
|
List<T> | Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and manipulate lists. |
|
Queue<T> | Represents a first-in, first-out collection of objects. |
|
SortedDictionary<TKey, TValue> | Represents a collection of key/value pairs that are sorted on the key. |
|
SortedDictionary<TKey, TValue>.KeyCollection | Represents the collection of keys in a SortedDictionary<TKey, TValue>. This class cannot be inherited. |
|
SortedDictionary<TKey, TValue>.ValueCollection | Represents the collection of values in a SortedDictionary<TKey, TValue>. This class cannot be inherited |
|
SortedList<TKey, TValue> | Represents a collection of key/value pairs that are sorted by key based on the associated IComparer<T> implementation. |
|
SortedSet<T> | Represents a collection of objects that is maintained in sorted order. |
|
Stack<T> | Represents a variable size last-in-first-out (LIFO) collection of instances of the same arbitrary type. |
|
SynchronizedCollection<T> | Provides a thread-safe collection that contains objects of a type specified by the generic parameter as elements. |
|
SynchronizedKeyedCollection<K, T> | Provides a thread-safe collection that contains objects of a type specified by a generic parameter and that are grouped by keys. |
|
SynchronizedReadOnlyCollection<T> | Provides a thread-safe, read-only collection that contains objects of a type specified by the generic parameter as elements. |
Structures
Interfaces
| Interface | Description | |
|---|---|---|
|
ICollection<T> | Defines methods to manipulate generic collections. |
|
IComparer<T> | Defines a method that a type implements to compare two objects. |
|
IDictionary<TKey, TValue> | Represents a generic collection of key/value pairs. |
|
IEnumerable<T> | Exposes the enumerator, which supports a simple iteration over a collection of a specified type. |
|
IEnumerator<T> | Supports a simple iteration over a generic collection. |
|
IEqualityComparer<T> | Defines methods to support the comparison of objects for equality. |
|
IList<T> | Represents a collection of objects that can be individually accessed by index. |
|
ISet<T> | Provides the base interface for the abstraction of sets. |
Community Content
SivaJi
Need performance consideration and comparision of feature list
Performance considerations and perhaps a comparision of feature list between different collections will help highly to make better apps. Why no C# syntax ? Need a little more explanation too.
hoodaticus
@Chomilino - Here's a tree class for ya
public class Node<T>
public List<Node<T>> Children = new List<Node<T>>();
public T Value;
end class
Use it like this:
Node<string> root = new Node<string>() { Value = "I am the root node!" };
Node<string> child = new Node<string>() { Value = "I am a child of the root node!" };
root.Children.Add(child);
Node<string> sibling = new Node<string>() { Value = "I am a sibling of child!" };
root.Children.Add(sibling);
Node<string> grandchild = new Node<string>() { Value = "I am a grandchild of the root node!"};
child.Children.Add(grandchild);
public List<Node<T>> Children = new List<Node<T>>();
public T Value;
end class
Use it like this:
Node<string> root = new Node<string>() { Value = "I am the root node!" };
Node<string> child = new Node<string>() { Value = "I am a child of the root node!" };
root.Children.Add(child);
Node<string> sibling = new Node<string>() { Value = "I am a sibling of child!" };
root.Children.Add(sibling);
Node<string> grandchild = new Node<string>() { Value = "I am a grandchild of the root node!"};
child.Children.Add(grandchild);
MunishGoyal[MSFT]
Yea performance indicators would be helpful for these collections
But I guess, they are more or less same as the structure name conveys (List, Hashtable etc. ) in theory. But definitely I have come across significant variations due to the implementation differences. So the performance indicators (O notation) should be made available for various operations.