C# 语言版本和 CLR

本文关键字:CLR 版本 语言 | 更新日期: 2023-09-27 18:35:02

我一直在阅读有关C#版本的各种文章和问题(包括Jon Skeet在SO上的回答(。但是,我无法理解一个简单的(我希望(事情。CLR、.NET 和 C# 版本如何相关?例如,是否可以使用支持 C# 6 的 C# 编译器并在 CLR 1 下运行生成的 IL 代码?例如,当添加对 async/await 的支持时,CLR 是否必须更改,或者仅仅因为 async/await 编译到纯 IL 中就不需要它?我非常熟悉 .NET 基础知识,但是,我不明白每个版本对 C# 进行了哪些更改。对async/await,lambdas和其他东西的支持究竟是如何添加到语言中的?它们是否需要对 .NET 框架或 CLR 进行更改?

这个答案说 C# 4 需要 CLR 4。要求是什么意思?据我了解,某些功能仍然可以在较低的CLR版本下工作。

C# 语言版本和 CLR

如果针对 CLR 版本 X 进行编译,则只能在该版本上运行代码。

为了向后兼容,每个 CLR 版本都会将较旧的 CLR 引入您的计算机。因此,如果安装 CLR 4,它还将安装 CLR 2 和 CLR 1。

因此,您可以在安装了 CLR 4 的计算机上运行针对 CLR 1 编译的代码。但不是相反。