簡體   English   中英

C#默認參數

[英]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及更高版本支持的更多內容

  • 命名參數:添加了C#4.0
  • Lambda表達式:添加了C#3.0
  • 自動屬性:添加了C#3.0
  • 擴展方法:添加C#3.0
  • Co / Contra Variance:添加了C#4.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM