奇怪的编译器行为 - 可选参数

时间:2012-02-10 14:35:05

标签: c# visual-studio .net-3.5

在我的项目中,一些开发人员在参数列表中添加了具有可选参数的方法:

public static string GeneratetPopupCall(string pageName,bool withEscapeChar = false)

我知道可选参数是C#4.0的一部分。 但我们的项目针对.net 3.5。 (C#3.0)

我的问题是:
如果3.5不支持可选参数,为什么会编译?为什么没有编译或语法错误?

3 个答案:

答案 0 :(得分:7)

您使用的是针对3.5框架的4.0 编译器

这将编译为兼容运行时2.0的IL。

答案 1 :(得分:2)

只要您使用Visual Studio 2010,您就可以使用可选参数,即使是较早的.NET Frameworks,也可以使用4.0。

可以找到的信息越多here

答案 2 :(得分:1)

在Visual Studio中,您可以指定给定项目的语言版本(项目属性 - >构建 - >高级)。 Visual Studio使用v4.0编译器来定位框架的v3.5。

虽然这有效,但在其他情况下可能会引起问题。例如,调用不同版本的编译器的自动构建环境显然会失败。需要注意的事项......