Covariant, contravariant and invariant are new concepts of C# 4. These are the most confusing concepts that I have ever read for C#. I have gone through Wiki and MSDN, but clarity was not there. Every source was giving show of words with a lot of confusion.
While googling I saw a post by Eric Lippert at
This is the best explanation on net for Covariant, contravariant and invariant.
Thank Eric Lippert.