2011-09-14 206 views
2

我正在开发一个目标框架为版本3.5的应用程序。但在查看代码时,我发现了一种使用默认参数的方法:C#版本兼容性

public void Contact(string name, string email, string phone, string phoneAreaCode = "") 
{ 
    //... 
} 

并且感到困惑。

语言功能独立于框架版本?两者之间的关系是什么?为什么这是上面可能的代码?

编辑:我已经在VS2010中创建了两个项目(一个类库和一个控制台),这两个项目都是为.NET 2.0框架设计的。在类库上,我创建了一个具有可选字符串参数的方法。我已经在控制台应用程序中使用它,没有任何问题,有和没有传递参数。这与VS2010有什么关系?而“VS2010”是指C#编译器4.0?

+0

还值得注意的是,在使用Visual Studio 2008/2010定位.NET 2时,可以使用C#3s自动属性。 – RichardOD

回答

4

编译器发出信息,但3.5运行时不使用它 - 它只是被忽略。

查看this的博客文章,以及这些SO问题 - onetwo

在本质上,3.5运行时看到这一点:

public void Contato(string nome, string email, string telefone, string ddd) 
{ 
    //... 
} 
+0

我在VS2010中创建了2个项目(一个类库和一个控制台),这两个项目都支持.NET 2.0 Framework。在类库上,我创建了一个具有可选字符串参数的方法。我已经在控制台应用程序中使用它,没有任何问题,无论是否传递参数(尽管链接文章)。这与VS2010有什么关系? – Raphael

+0

@Raphael - 评论不是代码示例的好地方。如果你有另一个问题,为什么不问一个新的问题? – Oded

+0

没有新问题,但我编辑了注释以使用无代码。 – Raphael

0

您必须使用VS2010 ...因为它支持它。

1

语言功能取决于你使用的是什么版本的Visual Studio。 .Net框架规定了.Net的功能和类可供你使用。

上面的代码是可能的,因为您使用的是Visual Studio 2010.您可以使用新代码编辑器的所有功能,无论您的装配目标是什么.Net版本。但是,当您尝试在.net 3.5代码中使用.net 4.0类或函数时,您将收到编译器错误。