擴展方法使你能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。(引自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方法,如果找到則執行方法,沒有找到才去找擴展方法并執行
新聞熱點
疑難解答