C# 3.0 擴充方法

我們在處理某些類別的資料時,可能會專門做一個處理資料的類別或方法來處理。
例如,以下是沒有實作轉型運算子的溫度類別:

public class 攝氏
{
    public double 溫度;
}

public class 華氏
{
    public double 溫度;
}

這些類別可能是別人定義好的,若我們需要某些新功能,例如攝氏轉華視,在以前可能需要靠繼承,或是實作一個轉型用的類別才能達到。例如我定義了溫度轉型類別如下:

因為我設定成靜態方法,在轉型時就是如下方式使用:

擴充方法

而在C#3.0開始提供了擴充方法,讓我們在其他類別中撰寫的方法,能出現在目標類別的成員裡面。意思是說透過擴充方法,C#3.0可以把我們剛剛撰寫的溫度轉型類別的溫度轉型方法,偽裝成攝氏或華氏類別自己的方法。

擴充方法的實作方式非常簡單,只要將方法透過this關鍵字指定需要偽裝的型別,就能成為該型別的擴充方法。當然還有兩單點但書:

  • 擴充方法本身需為靜態方法
  • 擴充方法所在類別需為靜態類別

根據以上方式,我們可以快速的把我們剛剛在轉型類別中撰寫的轉型方法,快速成為擴充方法。而this是寫在方法第一個傳入型別前,C#會幫我們把該方法偽裝成第一個傳入型別的方法,在執行時還是執行轉型類別中的方法。所以我們只要做以下修改,就能轉成為擴充方法:

使用這個方法時就能直接使用,C#會提示我們這是擴充方法,非常地方便。


Facebook留言板