As I am sure many of you have heard we are adding a cool new namespace in Whidbey… System.Collections.Generics… It contains generic versions of the collections you know and love today.  List<T>, Dictionary<K, V>, etc

 

In addition we are evaluating adding some new collections to the BCL… As we add those new collections we have to decide if we add both generic and non generic versions.    For example, say we added a LinkedList class to the BCL, should we add both LinkedList and LinkList<T>? 

 

Here are the pros and cons as I see them:

 

non-generic only

pro: less surface area to test, document, explain, etc

con: Misses out on all the cool features of generics (strong typing, performance, etc)

 

generic only

pro: less surface area to test, document, explain, etc

con: generics are not in the CLS until LH (some 3rd party languages don’t have support, but C#, VB.NET and C++ do support them),

       generics are still a “new” feature, some folks may not be ready to move to them right away.

 

both

pro: gives developers choices

con: gives developer choices ;-) 

The con here is that it makes the entire platform that much more complicated.  We have to document both, test both, developers have to know when to use one or the other, etc. 

 

Thoughts\Comments?  BTW, is LinkedList an interesting thing to add to the BCL?  What would you use it for?