This post originated from an RSS feed registered with .NET Buzz
by Eric Gunnerson.
Original Post: Generics and object collections
Feed Title: Eric Gunnerson's C# Compendium
Feed URL: /msdnerror.htm?aspxerrorpath=/ericgu/Rss.aspx
Feed Description: Eric comments on C#, programming and dotnet in general, and the aerodynamic characteristics of the red-nosed flying squirrel of the Lesser Antilles
In VS2003, since we don't have generics, we have lots of strongly-typed collections.
For example, there's the LinkCollection class, which holds objects of type Link.
Now that we have generics, we could replace such collections with:
List<Link>
(well, actually, we couldn't replace them, as that would break existing code, but
we could do that for new collections). That seems like a simple solution, but it isn't
optimal, for a couple of reasons:
Sometimes the type in the collection isn't sufficiently distinctive, especially if
it's a built-in type. You'd like to see something like EmployeeIDCollection rather
than List<int>
It's often useful to add additional functionality to the collection beyond what you
get from the built-in collection class.
The better solution is to define your own collection class. Nicely, you can base it
off of the collection class:
class EmployeeIDCollection: List<int>
{
...
}
The design guideline is not to expose collection classes, but rather to expose custom
collection classes (I really need a better name for those) instead.