В приведенном ниже коде:
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
(из-за ковариации)
Но почему я не могу назначить его IList
?
В этом отношении я не могу сделать даже следующее:
List<I1> listOfI12 = listOfCI1;
Разве ковариация не должна позволять мне назначать производный тип базовому типу?