2011-09-14 258 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類或函數時,您將收到編譯器錯誤。