奇怪的问题...
我从示例中实现了协方差。
我的目标固件是 4.0。
怎么会。我想看看它是否在 3.5/2 上失败 -> 但它不会。
不可能,因为协方差来自 FW4.0。
更改为 3.0 后,我构建并查看:(+不会在运行时失败)
最佳答案
框架 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/