c# - 为什么 C# 4.0 的协变/逆变仅限于参数化接口(interface)和委托(delegate)类型?

标签 c# clr c#-4.0 covariance contravariance

这是 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/

相关文章:

c# - 在 "out"参数中传递值类型是否会导致变量被装箱?

c# - 哪些 .Net 程序集作为标准集成到 SQL Server 2008 R2 CLR 中?

c# - 在 C# 中验证小数以在 SQL Server 中存储

WPF:System.Windows.Interop.InteropBitmap 到 System.Drawing.Bitmap

c# - 如何在C#中将我的线程(用户定义的线程)置于 sleep 模式?

c# - 如何创建硬编码列表?

java - 如何将 SDL2 库实现到 Xamarin.Android 中?

c# - 无法将 Type 1 隐式转换为 Type 1

debugging - 如何记录 CLR/.Net 中的所有垃圾收集事件?

c# - 验证模拟方法使用也被模拟的特定 CancellationTokenSource