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

本文关键字:参数 编译器 | 更新日期: 2023-09-27 18:23:57

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

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

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

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

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

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

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

只要使用Visual Studio 2010,即使使用较旧的.NET Frameworks而不是4.0,也可以使用可选参数。

更多信息可以在这里找到

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

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