积极答复者
vs 2010 C#用的是不是4.0的编译器?

问题
答案
-
你好!
这是个好问题,我详细解释一下:
在VS2010中,即使你选择的目标Framework设置成.NET Framework 3.5,编译的时候使用的也是C#4.0的编译器,所以C# 4.0的语法是可以通过编译的。
那么设置成.NET Framework 3.5有什么意义呢?
是很有意义的,这样可以保证编译出的代码可以成功的在.NET Framework 3.5上运行。实际上C# 语言的新特性有两种:
一种是“语法糖”,只是语法上提供便利而已,编译后的IL代码和过去没有本质上的不同,你使用这种新特性,即使你目标Framework设置成.NET Framework 3.5,也是可以通过编译的。
另外一些新特性是需要新版本的.NET Framework支持的(本质上是需要新版本的CLR支持),你使用这样的新特性,如果你设置成.NET Framework 3.5,就无法通过编译了。
综上所述,目标Framework设置,只能保证编译后的代码是否能在相应版本的Framework上成功运行,并不强制要求一定要使用相应版本的Framework的附带的编程语言的语法。
周雪峰- 已标记为答案 ThankfulHeartModerator 2010年10月29日 5:58
全部回复
-
你好!
这是个好问题,我详细解释一下:
在VS2010中,即使你选择的目标Framework设置成.NET Framework 3.5,编译的时候使用的也是C#4.0的编译器,所以C# 4.0的语法是可以通过编译的。
那么设置成.NET Framework 3.5有什么意义呢?
是很有意义的,这样可以保证编译出的代码可以成功的在.NET Framework 3.5上运行。实际上C# 语言的新特性有两种:
一种是“语法糖”,只是语法上提供便利而已,编译后的IL代码和过去没有本质上的不同,你使用这种新特性,即使你目标Framework设置成.NET Framework 3.5,也是可以通过编译的。
另外一些新特性是需要新版本的.NET Framework支持的(本质上是需要新版本的CLR支持),你使用这样的新特性,如果你设置成.NET Framework 3.5,就无法通过编译了。
综上所述,目标Framework设置,只能保证编译后的代码是否能在相应版本的Framework上成功运行,并不强制要求一定要使用相应版本的Framework的附带的编程语言的语法。
周雪峰- 已标记为答案 ThankfulHeartModerator 2010年10月29日 5:58