Extension Method in C#

在.Net中,有許許多多的類別可供使用,那如果想要在已有的類別上去新增自己做的Function,應該要怎麼做呢?

在.Net中,有許許多多的類別可供使用,那如果想要在已有的類別上去新增自己做的Function,應該要怎麼做呢?
這個時候我們可以撰寫擴充現有類別的程式碼,例如想要幫string來新增自訂的方法,可以加入以下的類別
{
    public static class Extension
    {
        public static string ShowMachineName(this string str)
        {
            return Environment.MachineName;
            
        }

        public static string AddMessage(this string str, string msg)
        {
            return "Hello : " + msg;
        }
    }
}
要特別注意的地方在下圖紅色框框的地方
要注意的地方是
  • 自行撰寫的類別比需是public static
  • 類別中的function必須是public static類型
  • function的第一個傳入參數必須要加上this的關鍵字,而隨後跟著的是要擴充的類別名稱
  • 需要傳入參數的話,則在function中的第二個參數加入想要傳入的參數型態以及名稱

這樣子,就可以幫現有的類別加上擴充方法了;有部分有沒有覺得很奇怪呢?為什麼擴充方法中,第一個傳入的參數是想要擴充的類別型態,又宣告了一個參數,但是都沒有用到阿?這參數是甚麼?這個來設個中斷點,看一下下圖應該就很清楚了
原來第一個參數的內容會是"執行個體"的內容。