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