编译为C#3.0或ISO-1或ISO-2的区别?

Con*_*ngo 19 .net c# compiler-construction visual-studio

在Visual Studio 2010中,在"高级构建设置"下,"语言版本"有以下选项:

  • 默认
  • ISO-1
  • ISO-2
  • C#3.0

编译为C#3.0是否有任何优势,例如基准速度或稳定性?

Mar*_*ell 18

你唯一应该弄乱的是,如果你在VS 2010中编写代码,但是你打算在早期的编译器(VS 2005或VS 2003)上编译代码.这将限制语言功能,例如LINQ(仅在C#3中),迭代器块(仅在ISO-2及更高版本中)等.

即使这样,它也不健壮; 有一些功能非常难以检测,并且不会被检测到 - 某些形式的泛型类型推断受此影响,因此您仍应针对早期的编译器进行测试.

除非您有理由,否则请使用"默认".通常,默认选择"默认",呃,默认.如果它正在选择ISO-1,那么您已经在某个时候更改了VS设置.

通常没有与此相关的任何速度差异 - 它是关于可用的语言 ; 但是,我还没有检查过一些微妙的情况,例如,如果选择了早期的编译器,那么类似字段的事件实现会恢复到原来的状态.


Con*_*ngo 8

保持默认状态.这意味着您可以使用所有C#3.0语言功能.

按"F1",它出现:

http://msdn.microsoft.com/en-us/library/f4ckecs0(v=vs.110).aspx

  • default编译器接受所有有效的语言语法.
  • ISO-1编译器仅接受ISO/IEC 23270:2003 C#语言规范中包含的语法.
  • ISO-2编译器仅接受ISO/IEC 23270:2006 C#语言规范中包含的语法.该规范可在ISO网站上获得.
  • C#3编译器仅接受3.0版C#语言规范中包含的语法.

  • 我建议添加ISO-1对应于.net 1.0/1.1框架中使用的C#版本,以及ISO-2对应于2.0框架中的版本.较新的语言版本尚未提交给ISO.C#3在维基百科中列为框架版本2.0,3.0和3.5.Defaul对应于4.0 frameowrk. (2认同)