我一直在阅读有关C#版本的各种文章和问题(包括Jon Skeet在这里的答案)。但是,我无法理解一个简单的(我希望)的事情。 CLR,.NET和C#版本如何相关?例如,是否可以使用支持C#6的C#编译器并在CLR 1下运行生成的IL代码?例如,当添加了对async / await的支持时,CLR是否必须更改或者是否因为async / await编译成普通IL而不需要它?我对.NET基础知识非常熟悉,但是,我不明白每个版本对C#进行了哪些更改。 async / await,lambdas和其他东西的支持究竟是如何添加到语言中的?他们是否需要更改.NET框架或CLR?
This answer说C#4需要CLR 4.需要什么意思?据我所知,某些功能仍然可以在较低的CLR版本下运行。
答案 0 :(得分:2)
如果针对CLR版本X进行编译,则只能在该版本上运行代码。
为了向后兼容,每个CLR版本都会将旧版CLR引入您的计算机。因此,如果您安装CLR 4,它还将安装CLR 2和CLR 1。
因此,您可以在已安装CLR 4的计算机上运行针对CLR 1编译的代码。但不是相反。