A collegue of mine recently sent out out a link to talk by the C# lead architect Anders Hejlsberg. Anders very elequently dicusses and describes covariance and contravariance in C# 4.0. This subject somewhat puzzled me the first time I came across these terms, so I thought I should share this with the wider community.
As .NET 4.0 becomes available, you will need to fully understand the limitations and why the new "in/out" keywords with generic types have been included in the C# language.
The talk is only around 15 minutes long and well worth a visit