2016-02-17 32 views
-2

我一直在阅读关于C#版本的各种文章和问题(包括Jon Skeet在这里的答案)。但是,我无法理解一个简单的(我希望)的事情。 CLR,.NET和C#版本如何关联?例如,是否可以使用支持C#6的C#编译器并在CLR 1下运行生成的IL代码?例如,当增加对异步/等待的支持时,CLR是否必须改变或者不需要,仅仅是因为异步/等待编译成简单的IL?我对.NET基础知识非常熟悉,但是,我不明白在每个版本中对C#做了哪些更改。 async/await,lambdas等语言的支持到底如何?他们是否需要对.NET框架或CLR进行更改?C#语言版本和CLR

This answer说C#4需要CLR 4.什么意思是要求?据我了解,一些功能仍然在较低的CLR版本下工作。

+0

[This](http://stackoverflow.com/a/247623/3159635)答案是一个很好的起点。 – AGB

+0

我没有提到,我确实看过这个答案,我知道相应的版本? –

回答

2

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

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

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

+0

它并没有真正回答我想知道的内容;我想我已经为这个问题选择了一个糟糕的措辞。 –