C# 函數參數中的this



先看下面的代碼:

復制代碼
public static class StringExtension
{
    public static void Foo(this string s)
    {
        Console.WriteLine("Foo invoked for {0}", s);
    }
}
復制代碼

為什么這里會有一個this關鍵字,做什么用?其實這就是擴展方法!這個擴展方法在靜態類中聲明,定義一個靜態方法,其中第一個參數定義可它的擴展類型。Foo()方法擴展了String類,因為它的第一個參數定義了String類型,為了區分擴展方法和一般的靜態方法,擴展方法還需要給第一個參數使用this關鍵字。

現在就可以使用帶string類型的Foo方法了:

string s="Hello"; s.Foo();

結果在控制台上顯示Foo invoked for Hello ,因為Hello是傳送給Foo方法的字符串。

 

歸納:擴展方法可以寫入最初沒有提供該方法的類中。還可以把方法添加到實現某個接口的任何類中,這樣多個類可以使用相同的實現代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM