首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译为C# 3.0或ISO-1或ISO-2的区别?

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

Stack Overflow用户
提问于 2012-02-07 09:59:42
回答 3查看 2K关注 0票数 19

在Visual 2010中,在“高级生成设置”下,“语言版本”有以下选项:

  • default
  • ISO-1
  • ISO-2
  • C# 3.0

作为C# 3.0编译有什么好处,例如基准速度或稳定性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-07 10:10:39

只有在编写代码(比如VS 2010 )时才应该处理这一点,但是您打算在早期的编译器(VS 2005或VS 2003)上编译代码。这将限制语言特性,如LINQ (仅在C# 3中)、迭代器块(仅在ISO-2及更高版本中)等。

即使如此,它也不健壮;有些特性很难检测,也不会被检测到--一些泛型类型推断会因此受到影响,所以您仍然应该对早期的编译器进行测试。

除非您有原因,否则请使用“默认”。通常情况下,“默认”是由,呃,默认的。如果它选择了ISO-1,那么您已经在某个时候更改了VS设置.

通常与此没有任何速度差异--这是关于available的语言;然而,我还没有检查过一些微妙的情况,例如,如果早期的编译器选择了类似字段的事件实现是否恢复到原来的方式。

票数 18
EN

Stack Overflow用户

发布于 2012-02-07 10:03:28

把这个放在默认状态下。这意味着您可以使用所有的C# 3.0语言特性。

按"F1",就会得到:

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

  • default编译器接受所有有效的语言syntax.
  • ISO-1,编译器只接受包含在ISO/IEC 23270:2003 C# language specification.
  • ISO-2中的语法,编译器只接受包含在ISO/IEC 23270:2006 C#语言规范中的语法。此规范可在ISO site.
  • C# 3上使用,编译器只接受包含在version 3.0 C# Language 中的语法
票数 8
EN

Stack Overflow用户

发布于 2012-02-07 10:29:49

要回答关于优势的问题:在选择一种而另一种方式时,不应该有性能上的好处。你得到或失去的是语言特性。例如,C#3有"var“、对象初始化器、自动属性、扩展方法、lambda表达式等。

如果您希望代码构建在非C#3环境中,例如旧版本的.Net或Mono版本的.Net CF,那么您需要避免使用这些环境。当然,没有这些特性在C#3中编写代码是可能的,因此C#将在C#3 (更大)中工作。

我听过有人说,在某些情况下,像LINQ这样的东西可能效率低下,所以你可以说,写得好的C#可能会更好地发挥作用。我不确定我是否真的同意这样一种笼统的声明,如果您有perf问题,那么您需要分析您的代码并修复热点;避免LINQ (例如)并不能保证代码具有更好的性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9174223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档