VS2008&C#3.5语言特色系列[视频]:扩展方法(Extension Methods)

来源:互联网 发布:美图薪资待遇 知乎 编辑:程序博客网 时间:2024/06/05 06:37
 
扩展方法的作用:当你对某个类型想附加新的功能(方法),但是你不能得到或者无法去修改原类型的源码的时候。使用扩展方法的时候,并没有对原有的类型产生任何的影响,仅仅是在当前应用程序中对其扩展了功能。
扩展方法必须是静态的,所以必须在静态类中去定义
扩展方法必须使用this关键字修饰参数,this代表其所修饰的类型被扩展了功能,附加上了相应的扩展方法。
扩展方法的参数可以有多个,但是只有第一个参数需要用this关键字修饰。
扩展方法可以有多个重载。
使用扩展方法可以对接口进行扩展
通过使用ILDASM进行分析,发现扩展方法在本质上还是调用了静态类的静态方法,然后将类型作为参数传入,具体请参看视频的演示
扩展方法实际是编译器调用某个类的某个方法的时候,先去这个类找,如果有这个方法,则就调用;如果找不到,根据引用的命名空间,再去找扩展方法(静态类的静态方法)。找到,就使用,找不到当然就编译错误了。
扩展方法跟类的方法冲突时候,编译使用不会报任何错误,这时候以类的方法优先级最高,这时我们使用类的方法,而不是扩展方法。
下面是方法的从高到低的优先级:
  1. 实例方法
  2. 在同一个命名空间里的扩展方法
3. 在当前命名空间之外的扩展方法
和继承不同的是,扩展方法只允许添加,不允许改变
 
视频下载:

VS2008&C#3.5语言特色系列:扩展方法(共2部分,第1部分) 
http://download.csdn.net/source/422396

VS2008&C#3.5语言特色系列:扩展方法(共2部分,第2部分)

http://download.csdn.net/source/423077

原创粉丝点击