在.NET 3.5版本开始,引入了扩展方法,可以为已经设计好的类,为其添加一些方法,比如string类是系统已经定义好的,如果需要给该类添加一些函数,我们可以定义一个类StringExt继承string类,然后定义我们需要的函数,但如果是密封类的话,就不能通过继承来扩展该类如果我们只需要为一个类添加一两个函数,扩展的方法不是很多,通过继承的方法来扩展即增加了代码,而且系统对继承类所需的开销也比较大
在.NET3.5提供了扩展方法,我们可以很容易的对一个类进行扩展,所花的开销比继承的方法小,效率更高
下面为string类添加一个MyMethod方法,该方法输出字符串
首先有几个规则
1)扩展方法必须在一个非嵌套,非泛型的静态类中
定义该方法的类不能嵌套在其他类中,应直接在命名空间下定义
2)扩展方法至少有一个参数
3)扩展方法的第一个参数为扩展方法的类(我们对string类进行扩展,则第一个参数类型为string),必须加上前缀this
4)第一个参数不能为指针类型,不能使用ref,out修饰符
class Program { static void Main(string[] args) { string s = "test"; string test = "Hello Bomo"; s.MyMethod(test); //调用扩展方法MyMethod } } //扩展方法类:必须为非嵌套,非泛型的静态类 public static class StringExt { //为string类扩展的方法 public static void MyMethod(this string str, string msg) { Console.WriteLine(msg); } }
这样,string就多了一个MyMethod方法了