在下面的代码中:
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"赋值给一个
但是为什么我不能将它赋值给一个呢? 就此而言,我甚至不能做以下操作:
List<I1> listOfI12 = listOfCI1;
协变不应该允许我将派生类型分配给基类型吗?