扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。(引自csdn)
或许用一个例子说明更加明白
扩展方法:
public static class Helper { public static bool IsNullOrEmpty(this string str) { return string.IsNullOrEmpty(str); } }
使用:
static void Main(string[] args) { Console.Write("qwe".IsNullOrEmpty()); Console.ReadKey(); }
扩展方法必须是静态类、静态方法,为什么要是静态的,看源码便可知道
扩展方法其实就是 静态的方法调用
---------------------------------------------------------------------------------------------------------------------------
当一个实例对象存在一个与扩展方法同名的方法时,会执行那个方法呢?
public static class Helper { public static void Miao() { Console.WriteLine("我是扩展方法的小猫"); } } public class Cat { public void Miao() { Console.WriteLine("我是实例发的小猫"); } }
static void Main(string[] args) { Cat c = new Cat(); c.Miao(); Console.ReadKey(); }
由此可见编译器 编译时会优先到Cat类中找 Miao 方法,如果找到则执行方法,没有找到才去找扩展方法并执行
原文:http://www.cnblogs.com/jhy55/p/4285066.html