在下面的代码中:
interface I1 { }
class CI1: I1 { }
List<CI1> listOfCI1 = new List<CI1>();
IEnumerable<I1> enumerableOfI1 = listOfCI1; //this works
IList<I1> listofI1 = listOfCI1; //this does not
Run Code Online (Sandbox Code Playgroud)
我可以将"listOfCI1"分配给IEnumerable<I1>(由于协方差)
但为什么我无法将其分配给IList<I1>?就此而言,我甚至无法做到以下几点:
List<I1> listOfI12 = listOfCI1;
Run Code Online (Sandbox Code Playgroud)
协方差不应该允许我将派生类型分配给基类型吗?