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

本文详细介绍了 C# 中扩展方法的概念与使用方法。解释了如何为现有类型添加新功能而不修改其源代码,包括扩展方法的语法、实现原理及其在程序中的优先级规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

http://download.youkuaiyun.com/source/423077

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值