, public static class ,,,{ ,,,,,,,public static int 测试(却;能够string s) ,,,,,,,{ ,,,,,,,,,,,return 1; ,,,,,,,} ,,,,,,,public static int IndexOf(却;能够string 年代,char c) ,,,,,,,{ ,,,,,,,,,,,return 1; ,,,,,,,} ,,,} ,,,class 程序 ,,,{ ,,,,,,,static void Main (string [], args) ,,,,,,,{ ,,,,,,,,,,,int a =,“(sds); ,,,,,,,,,,,int c =,“sds test (); ,,,,,,,,,,,Console.WriteLine(一个); ,,,,,,,,,,,Console.WriteLine (c); ,,,,,,,,,,,int b =, A.IndexOf (“asdfg”,“d”); ,,,,,,,,,,,Console.WriteLine (b); ,,,,,,,,,,,int d =,“asdfg .IndexOf (' d '); ,,,,,,,,,,,Console.WriteLine (d); ,,,,,,,} ,,,}
扩展方法很简单,就是在参数类型前面加这个,就为当前参数的类型增加了扩展方法,但是必须在静态类中声明静态方法(想要扩展的方法)。以上例子为字符串类扩展了测试方法和indexof方法(字符串中有同名方法),运行结果为1 1 1 2,由此可以推论扩展的方法如果和字符串类中的方法重名,则会执行字符串类中的方法,而不会执行扩展方法,再让我们来看看反编译的结果
由此更可以确定执行的是字符串中的方法,再看上面的两个调用,可以观察到调用的都是一个类中的静态方法,和字符串类并无多大关联,也可以得出扩展方法是不能调用字符串中的私有变量和方法,所以字符串类也不用重新编译。
对扩展类总结下:
,,,,扩展方法不改变原有被扩展类代码,不用重新编译被扩展类。
,,,,不能访问被扩展类的私有成员,当和同名方法重名时优先执行原方法
,,,,引用一个类库,但是我们没有该类库的源代码,那么我们可以使用扩展方法,使用扩展方法进行类的扩展。
,,,,,,
第一次写博文,望大神多多指点。