擴展方法使你能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。 擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。(引自csdn)
或許用一個例子說明更加明白
擴展方法:
public static class Helper { public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } } View Code使用:
static void Main(string[] args) { Console.Write("qwe".IsNullOrEmpty()); Console.ReadKey(); } View Code
擴展方法必須是靜態類、靜態方法,為什麼要是靜態的,看源碼便可知道
擴展方法其實就是 靜態的方法調用
---------------------------------------------------------------------------------------------------------------------------
當一個實例對象存在一個與擴展方法同名的方法時,會執行那個方法呢?
public static class Helper { public static void Miao() { Console.WriteLine("我是擴展方法的小貓"); } } public class Cat { public void Miao() { Console.WriteLine("我是實例發的小貓"); } } View Code static void Main(string[] args) { Cat c = new Cat(); c.Miao(); Console.ReadKey(); } View Code由此可見編譯器 編譯時會優先到Cat類中找 Miao 方法,如果找到則執行方法,沒有找到才去找擴展方法並執行