扩展方法

扩展方法:它必须放在一个非嵌套,非泛型的静态类中,this关键字前不能有任何修饰符

1、当程序编译的时候,会扫描所有静态类中,是否存在第一个参数带有this关键字的方法,如果有就会将该方法添加到扩展方法表里

2、扩展方法的类必须是静态类(缩小扫描扩展方法的范围),方法的第一个参数必须是this 类 对象名,表示这个方法是这个类的扩展方法,也可以通过这个对象去访问类内的其他成员

3、扩展方法所在的类的命名空间应改为和原有的类一致,如果不一致在使用该类的扩展方法时,要将二者命名空间全部引入(麻烦)

4、扩展方法不会真的编译到原来的类中,而是当你使用扩展方法的时候,到扩展方法表中查询该扩展方法,将这个对象传递到扩展方法中,执行扩展方法(静态方法)

5、当扩展方法和实例方法同名的时候同参的时候,执行实例方法;

6、扩展方法根本就不是该类中的成员,所以可以定义的相同。如果参数不同,vs提示为重载,但又不是真的重载(你懂的)

7、可以让空引用(class c=null)使用异常,但是如果扩展方法中使用了传来的对象,则会报空指针异常(一般情况下我们使用扩展方法是为了更好的操作原有的类成员,所以都会使用传来的类对象)

8、扩展方法是可以被继承的

 

posted on 2013-12-12 16:00  无缘沙漠雨  阅读(152)  评论(0)    收藏  举报

导航