(сделано вики, на случай дупс)
C # (3.0) не поддерживает ковариацию списков и т. Д. C # 4.0 будет поддерживать ограниченную [co | contra] дисперсию, но все еще не списки .
Проблема в том, что с:
Container<BaseClass> obj = new Container<ChildClass>();
Я мог бы сделать:
obj.Add(new SomeOtherSubclass()); // SomeOtherSubclass : BaseClass
который компилируется, но не работает.
Такое поведение поддерживается для массивов, но в основном по историческим причинам.