The .NET Framework provides a number of type-safe (generic)
collections, including the list<t>
, stack<t>
, queue<t>
, and dictionary<key><value>
.
You are free to create your own generic collection types as well.
Generics allow the collection designer to create a single collection without regard to the type of object it will hold, but to allow the collection user to define, at compile time, which type the object will hold. This enlists the compiler in finding bugs; if you add an object of the wrong type to a collection, it will be found at compile time, not run time. It also eliminates the need for casting and for boxing and unboxing.
The .NET Framework provides a number of interfaces that
collections must implement if they wish to act like the built-in
collections (such as being iterated by a foreach
loop).
An indexer allows you to access or assign objects to and from
a collection just as you do with an array (for example, myCollection[5] = "hello"
).
Indexers need not be restricted to integers. It is common to create indexers that take a string to assign or retrieve a value.
All framework collections implement the Sort( )
method. If you want to be able to
sort a collection of objects of a user-defined type, however, the
defining class must implement the IComparable
interface.
The generic list collection, List<T>
, works like an array whose
size is increased dynamically as you add elements.
The Queue<T>
class is
a first-in, first-out collection.
The Stack<T>
class is
a last-in, first-out collection.
A dictionary<k,v>
is
a collection that associates a key with a value. Typically, the key
is short, and the value is large.