为什么.Net中的泛型类对于它们的泛型args是不变的?

时间:2014-07-03 18:22:15

标签: c# .net generics

为什么在.Net中模仿泛型类是对泛型参数的不变操作? 接口和委托不是,但类是。

例如,我希望能够将Expression<Func<string>>类型的对象分配给Expression<Func<object>>。由于Func<T>中的T为“out”且Expression是不可变的,因此按照我的方式分配它是合理的,对吗?

1 个答案:

答案 0 :(得分:-2)

如果类允许变体类型参数,您将无法在任何字段中使用它们,因为字段始终(至少有时)可写和可读。

这会限制效用,使其不值得。