[英]C# Default 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文章 - > 命名和可选参数 )
有人可以帮我澄清一下。 C#4不需要.Net4? 什么是可选参数实际上是一部分?
谢谢。
从1.0开始,CLR支持可选参数。 像VB.Net这样的语言从一开始就一直在使用它们。 虽然支持它们的第一个版本的C#是4.0,但它仍然可以生成2.0 CLR的有效代码,实际上也是如此。 因此,如果您的目标是3.5 CLR(或2.0,3.0等等),您可以在2010年使用默认参数
此类支持不限于默认参数。 许多新的C#功能可用于旧版本的框架,因为它们不依赖于CLR更改。 以下是CLR版本2.0及更高版本支持的更多内容
如果你编译它并使用像ILDASM这样的工具检查输出,你会看到可选参数只是通过向描述方法形式参数的元数据添加一个属性来实现。 只要该属性类在目标平台上可用,在下层平台上使用发出的代码应该没有问题。
语言版本独立于框架版本。 对于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功能。
Visual Studio 2010附带了C#4.0,C#编译器了解可选参数。 所以是的,C#4.0语言定义与.NET 4.0不同。 我猜一个为.NET 3.5编译的可选参数的方法将在打开时显示重载方法。 VS 2008
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.