协方差也在3.5 / 2.0?

奇怪的问题……

我已经从例子中实现了协方差。

我的目标FW是4.0。

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

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

在此处输入图像描述

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

在此处输入图像描述

在此处输入图像描述

协方差在框架3中得到支持,但未在编译器中实现。 您正在使用编译器4定位框架3。

这是在Eric Lippert博客文章中提到的,我会看看我是否能找到它。

编辑

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

从版本2.0开始,CLR支持协变和逆变generics类型参数。 在版本4之前,它只是语言C#没有提供任何语法。