1. 程式人生 > >C# 方法中的this引數

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方法的字串。

歸納擴充套件方法可以寫入最初沒有提供該方法的類中。還可以把方法新增到實現某個介面的任何類中,這樣多個類可以使用相同的實現程式碼。