为什么编译器不允许为对象赋值整数?
IQueryable<object> objects = null;
IQueryable<int> ints = null;
objects = ints;
隐式类型转换(协方差的函数)并不适用于所有泛型。SomeGeneric<<em>ValueType> 不是从 SomeGeneric<</em>Reference派生的>因此,即使类型参数已经存在隐式转换(在本例中为 boxing),强制转换它也是无效的。
如果您使用的是 C# 4.0,则可以使用 ISomeGeneric 将泛型接口定义为协变>并且前提是泛型参数彼此派生,则可以强制转换。如果未派生泛型参数,则无法强制转换。