为什么编译器不允许为对象分配int?
IQueryable<object> objects = null;
IQueryable<int> ints = null;
objects = ints;
答案 0 :(得分:1)
隐式类型转换(协方差函数)不适用于所有泛型。 SomeGeneric&lt; ValueType&gt; 不是从 SomeGeneric&lt; Reference&gt; 派生的,因此,即使已经存在类型参数的隐式转换,也无法对其进行转换(在这种情况下,拳击)。
如果您使用的是C#4.0,可以使用 ISomeGeneric&lt; out T&gt; 将通用接口定义为协变,并且假设通用参数彼此派生,然后你可以施展。如果未派生泛型参数,则无法强制转换。