C#默认参数

时间:2010-08-30 16:24:57

标签: c# .net visual-studio-2010 optional-parameters

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

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

现在,我必须针对.Net 3.5,我的理解是Optional Parameters是.Net 4的一部分。但是,我的项目构建并且我仔细检查了属性 - 应用程序页面其中3.5表示目标框架。然后我在MSDN上发现了一篇文章,说它是VS2010中C#4的一个特性。 ( MSDN文章 - > Named and Optional Arguments

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

谢谢。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

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

答案 2 :(得分:2)

语言版本独立于框架版本。对于C#,它们碰巧主要是并行运行,即C#4和框架4.0随Visual Studio 2010一起运行。(但是没有3.5版本的C#。)

使用VB版本号不同,因为VB 7是第一个VB.NET版本。因此,VB 10与框架4.0同时出现。

可选参数是C#4中引入的语言功能。当您使用VS 2010时,即使您定位框架2.0,也使用C#4,因此您可以使用所有C#4功能。

答案 3 :(得分:-1)

C#4.0包含在Visual Studio 2010中,C#编译器可以理解可选参数。所以是的,C#4.0语言定义与.NET 4.0不同。我猜一个为.NET 3.5编译的可选参数的方法将在打开时显示重载方法。 VS 2008