这是 CLR 的限制还是与现有代码存在兼容性问题?
这是否与 C# 4.0 中委托(delegate)组合的困惑变化有关?
编辑: 是否有可能在 CLR 上运行没有这种限制的使用协变/逆变的语言?
最佳答案
您会想阅读埃里克·利珀特 (Eric Lippert) 的博文,了解它为何如此运作。简而言之,他们允许尽可能多的变化,不允许开发人员在编程中犯下可能导致难以追踪错误的严重错误。 4.0 中的差异量比 3.0 规则大大扩展,据我所知,这是对开发人员有益的内容与允许安全的内容之间的平衡,不会因无意的错误引起太多麻烦。
http://blogs.msdn.com/b/ericlippert/archive/tags/covariance+and+contravariance/default.aspx
关于c# - 为什么 C# 4.0 的协变/逆变仅限于参数化接口(interface)和委托(delegate)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3405896/