c# - 协方差也在 3.5/2.0 中?

标签 c# .net-4.0 covariance

奇怪的问题...

我从示例中实现了协方差。

我的目标固件是 4.0。

怎么会。我想看看它是否在 3.5/2 上失败 -> 但它不会。

不可能,因为协方差来自 FW4.0。

enter image description here

更改为 3.0 后,我构建并查看:(+不会在运行时失败)

enter image description here

enter image description here

最佳答案

框架 3 支持协变性,但未在编译器中实现。您正在使用编译器 4 目标框架 3。

Eric Lippert 的博客文章中提到了这一点,我会看看能否找到它..

编辑

为了进一步澄清,公共(public)语言运行时和 C# 编译器 (csc.exe) 是两个独立的事物。协变和逆变在 CLR 2.0 版中引入。直到版本 4 才将它们引入 C#。您正在使用编译器 4 构建版本 3 IL,这就是它工作的原因。

关于c# - 协方差也在 3.5/2.0 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210483/

相关文章:

c# - Rust 中 fn 参数的协方差使用什么?

c++ - 覆盖虚函数返回类型不同且不是协变的

c# - 在 Windows 服务而不是 IIS 中运行 Web 服务

c# - Foreach 循环正确 - 检查 .Any() 返回错误

c# - 这是 LINQ 查询 "correct"吗?

c# - 部分类与自动生成的类部分不匹配

通用堆的 Scala 实现

c# - 通过提供模数和指数进行 RSA 加密

c# - ASP.NET 核心 SPA SSR : Use AntiForgery

com - .NET 是 COM 的替代品吗?