The .NET Framework provides a number of
interfaces , such as IEnumerable
and ICollection, that the designer of
a collection must implement to provide full collection semantics. For
example, ICollection allows your
collection to be enumerated in a foreach loop.