fb粉專:https://www.facebook.com/dannyliu.me
我們在處理某些類別的資料時,可能會專門做一個處理資料的類別或方法來處理。
例如,以下是沒有實作轉型運算子的溫度類別:
public class 攝氏
{
public double 溫度;
}
public class 華氏
{
public double 溫度;
}
這些類別可能是別人定義好的,若我們需要某些新功能,例如攝氏轉華視,在以前可能需要靠繼承,或是實作一個轉型用的類別才能達到。例如我定義了溫度轉型類別如下:
因為我設定成靜態方法,在轉型時就是如下方式使用:
而在C#3.0開始提供了擴充方法,讓我們在其他類別中撰寫的方法,能出現在目標類別的成員裡面。意思是說透過擴充方法,C#3.0可以把我們剛剛撰寫的溫度轉型類別的溫度轉型方法,偽裝成攝氏或華氏類別自己的方法。
擴充方法的實作方式非常簡單,只要將方法透過this關鍵字指定需要偽裝的型別,就能成為該型別的擴充方法。當然還有兩單點但書:
根據以上方式,我們可以快速的把我們剛剛在轉型類別中撰寫的轉型方法,快速成為擴充方法。而this是寫在方法第一個傳入型別前,C#會幫我們把該方法偽裝成第一個傳入型別的方法,在執行時還是執行轉型類別中的方法。所以我們只要做以下修改,就能轉成為擴充方法:
使用這個方法時就能直接使用,C#會提示我們這是擴充方法,非常地方便。