Generic Type Variance in C# and the CLR
Andrew Stopford has an interesting couple of posts on the CLR's support for generic type variance[1] in version 2.0, and the lack of which in C# 2.0. I join Andrew in wishing this would be implemented in C# 3.0 (or at least in an interim '2.1' release with .NET 3.0).
Be sure to read the comments on those posts too for some more in-depth information about this.
[1] Generic type variance means that List<string> is a List<object>, just like string[] is a object[].