为什么C#/ CLR不支持方法覆盖co/contra-variance?

the*_*oop 13 .net c# clr overriding covariance

有很多问题和答案关于黑客攻击C#的限制,不允许在重写时将方法返回(和参数)类型更改为兼容类型,但为什么在C#编译器或CLR中存在这种限制?正如我所看到的,如果允许共同/反向差异,没有什么可以破坏,那么背后的原因是什么呢?

可以要求扩展访问参数的类似问题 - 例如,使用公共方法覆盖受保护的内部方法(Java支持的内容,IIRC)

Joe*_*orn -1

确实如此,你只需要等待 VS2010/.Net 4.0 即可。

  • 这是不正确的。C# 4.0 不添加返回类型协方差。我们添加了泛型类型差异,这是完全不同的。 (5认同)