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