C#默认参数

Ref*_*din 11 .net c# optional-parameters visual-studio-2010

对于某人来说,这可能是一个非常简单的答案.我有一个Optional Parameter像这样的方法;

public static Email From(string emailAddress, string name = "")
    {
        var email = new Email();
        email.Message.From = new MailAddress(emailAddress, name);
        return email;
    }
Run Code Online (Sandbox Code Playgroud)

现在,我必须以.Net 3.5为目标,这是我的理解,它是Optional Parameters.Net 4的一部分.但是,我的项目构建并且我仔细检查了属性 - 应用程序页面,其中指出3.5作为目标框架.然后我在MSDN上发现了一篇文章,说它是VS2010中C#4的一个特性.(MSDN文章 - > 命名和可选参数)

有人可以帮我澄清一下.C#4不需要.Net4?什么是可选参数实际上是一部分?

谢谢.

Jar*_*Par 22

从1.0开始,CLR支持可选参数.像VB.Net这样的语言从一开始就一直在使用它们.虽然支持它们的第一个版本的C#是4.0,但它仍然可以生成2.0 CLR的有效代码,实际上也是如此.因此,如果您的目标是3.5 CLR(或2.0,3.0等等),您可以在2010年使用默认参数

此类支持不限于默认参数.许多新的C#功能可用于旧版本的框架,因为它们不依赖于CLR更改.以下是CLR版本2.0及更高版本支持的更多内容

  • 命名参数:添加了C#4.0
  • Lambda表达式:添加了C#3.0
  • 自动属性:添加了C#3.0
  • 扩展方法:添加C#3.0
  • Co/Contra Variance:添加了C#4.0


Eri*_*ert 5

如果你编译它并使用像ILDASM这样的工具检查输出,你会看到可选参数只是通过向描述方法形式参数的元数据添加一个属性来实现.只要该属性类在目标平台上可用,在下层平台上使用发出的代码应该没有问题.