(made wiki, in case of dups)
C# (3.0) doesn't support covariance of lists etc. C# 4.0 will support limited [co|contra]variance, but still not lists.
The problem is that with:
Container<BaseClass> obj = new Container<ChildClass>();
I could do:
obj.Add(new SomeOtherSubclass()); // SomeOtherSubclass : BaseClass
which would compile, but not work.
This behaviour is supported for arrays, but largely for historic reasons.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…