擴展方法是C#3.0引入的新特性,使用它,可以在不修改某一類的代碼的情況下,實現該類方法的擴展。
為一個類添加擴展方法,需要三個要素:
1.擴展方法所在的類為靜態類
2.擴展方法本身要為靜態方法
3.擴展方法的第一個參數要用關鍵字this,指向要擴展的類
下面請看一個實例:
//靜態類 public static class TestExtensionM { //靜態方法 public static int ExtensionInt(this int s) //this關鍵字 { return s + s; } }
這個擴展方法是服務於int類型的,返回它自己的2倍;
使用方法也很簡單:
int a = 9; a = a.ExtensionInt(); Debug.WriteLine(a);
a為9,調用擴展方法以后,也看到了正確返回結果18
實際上也可以用: int.Add(a)的形式使用,但顯然上圖所示的更加簡單易用。
擴展方法,也可以傳入參數:
//靜態類 public static class TestExtensionM { //靜態方法 public static int ExtensionInt(this int s,int a) //this關鍵字 { return s + a; } }
使用的時候,傳入對應的參數即可
int a = 9; a = a.ExtensionInt(6); Debug.WriteLine(a);
這種靈活的方式,可以讓我們的開發更便捷,但是不要濫用擴展方法,當擴展方法與類原始的方法重名時,原始方法的優先級高於擴展方法,並且對於系統類,不要隨便添加擴展方法。