在Visual Studio 2010中,在“高级构建设置”下,“语言版本”有以下选项:
编译为C#3.0是否有任何优势,例如:基准速度还是稳定性?
答案 0 :(得分:18)
唯一一次你应该弄乱这个问题就是你在VS 2010中编写代码,但是你打算在早期的编译器(VS 2005或VS 2003)上编译代码。这将限制语言功能,例如LINQ(仅在C#3中),迭代器块(仅在ISO-2及以上版本中)等。
即使这样,它也不健壮;有一些功能非常难以检测,并且不会被检测到 - 某些形式的泛型类型推断受此影响,因此您仍应该针对早期的编译器进行测试。
除非您有理由,否则请使用“默认”。通常,默认选择“默认”,呃,默认。如果它正在选择ISO-1,那么您已经在某个时候更改了VS设置。
通常没有与此相关的任何速度差异 - 它是关于可用的语言;但是,我在一些微妙的情况下检查了 ,例如,如果选择了早期的编译器,那么类似字段的事件实现会恢复到原来的状态。
答案 1 :(得分:8)
保持默认状态。这意味着您可以使用所有C#3.0语言功能。
按" F1",它出现:
http://msdn.microsoft.com/en-us/library/f4ckecs0(v=vs.110).aspx
答案 2 :(得分:1)
回答有关优势的观点:在选择优势时,应该没有性能优势。你获得或放松的是语言特征。例如。 C#3有“var”,对象初始化器,自动属性,扩展方法,lambda表达式等等。
如果您希望您的代码在非C#3环境中构建,例如较旧的.Net或.Net CF的Mono版本,那么您将需要避免这些。当然,在C#3中编写没有这些功能的代码是可能的,因此ISO C#将在C#3(及更高版本)中运行。
我听说有人认为LINQ 之类的东西在某些情况下可能效率低下,所以你可能会认为写得好的ISO C#可能会更高效。我不确定我是否真的同意这个作为一揽子声明,如果你有性能问题,那么你需要分析你的代码并修复热点;避免使用LINQ(例如)并不保证代码性能更高。