【发布时间】:2011-04-18 17:21:20
【问题描述】:
可能的重复:
Why isn't there generic variance for classes in C# 4.0?
Why does C# (4.0) not allow co- and contravariance in generic class types?
.NET 4.0 新的泛型类型参数的协变和逆变只适用于接口和委托。类也不支持它的原因是什么?
【问题讨论】:
-
不确定你在说什么,类支持协变和逆变:见这篇博文:blogs.msdn.com/b/wriju/archive/2009/07/31/…
-
那篇文章只是显示了代表的差异。
-
谁投票结束为“不是一个真正的问题”?这是一个非常好的问题......
-
是的! :) 实际上 Stackoverflow 是一个完整的问题,人们试图将新的方差内容应用于类(自然而然地失败了)。
-
@Thomas:是的,我有。方差不是黑魔法,这个概念自几个世纪以来就被很好地理解,并且已经被证明可以工作数十次。事实上,通过方差和更好的编译器,可以在编译时检测到错误,而这会导致之前在运行时出现未检测到的错误。因此,对真实方差的支持可以使程序更正确。 .NET 方法与 Java 中的泛型类似。我很生气,没有哪个主流 VM 不采用“让我们一起破解”的方法来进行类型系统设计。
标签: c#-4.0 covariance contravariance