将 IQueryable 分配给 IQueryable 时出现编译错误

本文关键字:IQueryable 错误 编译 int 分配 object | 更新日期: 2023-09-27 17:57:21

为什么编译器不允许为对象赋值整数?

IQueryable<object> objects = null;
IQueryable<int> ints = null;
objects = ints;

将 IQueryable<int> 分配给 IQueryable<object> 时出现编译错误

隐式类型转换(协方差的函数)并不适用于所有泛型。SomeGeneric<<em>ValueType> 不是从 SomeGeneric<</em>Reference派生的>因此,即使类型参数已经存在隐式转换(在本例中为 boxing),强制转换它也是无效的。

如果您使用的是 C# 4.0,则可以使用 ISomeGeneric 将泛型接口定义为协变>并且前提是泛型参数彼此派生,则可以强制转换。如果未派生泛型参数,则无法强制转换。

相关文章: