Вопрос о ковариации C #

В приведенном ниже коде:

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;

Разве ковариация не должна позволять мне назначать производный тип базовому типу?

15
задан abatishchev 27 October 2010 в 14:49
поделиться