编译为C#3.0或ISO-1或ISO-2之间的区别?
在Visual Studio 2010中,在“高级生成设置”下有以下“语言版本”选项:编译为C#3.0或ISO-1或ISO-2之间的区别?,c#,.net,visual-studio,compiler-construction,C#,.net,Visual Studio,Compiler Construction,在Visual Studio 2010中,在“高级生成设置”下有以下“语言版本”选项: 违约 ISO-1 ISO-2 C#3.0 编译为C#3.0是否有任何优势,例如基准速度或稳定性?将其保留为默认值。这意味着您可以使用所有C#3.0语言功能 按“F1”,它会显示: 默认值编译器接受所有有效的语言语法 ISO-1编译器只接受ISO/IEC 23270:2003 C#语言规范中包含的语法 ISO-2编译器只接受ISO/IEC 23270:2006 C#语言规范中包含的语法。本规范可在ISO
- 违约
- ISO-1
- ISO-2
- C#3.0
编译为C#3.0是否有任何优势,例如基准速度或稳定性?将其保留为默认值。这意味着您可以使用所有C#3.0语言功能 按“F1”,它会显示:
- 默认值编译器接受所有有效的语言语法
- ISO-1编译器只接受ISO/IEC 23270:2003 C#语言规范中包含的语法
- ISO-2编译器只接受ISO/IEC 23270:2006 C#语言规范中包含的语法。本规范可在ISO网站上获得
- C#3编译器只接受3.0版C#语言规范中包含的语法
通常不存在与此相关的任何速度差-这与可用的langauge有关;但是,我没有检查一些微妙的情况,例如,如果选择了早期的编译器,类字段的事件实现是否会恢复到原来的方式。为了回答关于优势的问题:选择一个而不是另一个,不应该有任何性能优势。你得到或失去的是语言特征。例如,C#3具有“var”、对象初始值设定项、自动属性、扩展方法、lambda表达式等 如果您希望在非C#3环境中构建代码,如较旧的.Net或.Net CF的Mono版本,则需要避免这些。当然,在C#3中编写没有这些特性的代码是可能的,因此ISO C#将在C#3(以及更高版本)中工作
我听过有人说像LINQ这样的东西在某些情况下可能效率低下,所以你可以说写得好的ISO C可能更有效。我不确定我是否真的同意这一笼统的说法,如果你有性能问题,那么你需要分析你的代码并修复热点;例如,避免LINQ并不能保证代码的性能更高。qv“ISO-1是任何新C#项目的默认值。”-你确定吗?我把它默认设置为
default
。@AakashM你说得对,我已经纠正了这个问题。我建议添加ISO-1对应于.net 1.0/1.1框架中使用的C版本,ISO-2对应于2.0框架中使用的版本。较新的语言版本尚未提交给ISO。在维基百科中,C#3被列为框架版本2.0、3.0和3.5。Defaul对应于4.0框架工作。