В приведенном ниже коде:
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
Я могу присвоить свой "listOfCI1" IEnumerable<I1>
(из-за ковариации)
Но почему я не могу назначить его IList<I1>
?
В этом случае я не могу даже сделать следующее:
List<I1> listOfI12 = listOfCI1;
Не следует ли ковариация разрешить присвоить производный тип базовому типу?