扩展方法
有许多扩展类的方式。 如果有类的源代码,继承α 口 第 4章所述)就 是给对象添加功能的好方法。
但如果没有源代码,该 怎么办?此时可 以使用扩展方法,它允许改变一个类,但不需要该类 的源 、
代码 。
扩展方法是静态方法,它是类的一部分,但实际上没有放在类的源代码中。假定上例中的 Money
类需要一个方法 AddToAmomtrdec涮 am。 mtToAdd,。 但是,由 于某种原因,程序集最初的源代码
不能直接修改。 此时必须做的所有工作就是创建一个静态类,把方法 AddToAmountO添加为一个静
态方法。 对应的代码如下 :
namespace Worker ( public statio class MoneyExtension ( public static void AddToAmount〈 this MOney money, decimal amountToAdd) ( money.Amount += amountToAdd; ) } )
注意 AddToAmomjO方法的参数。 对于扩展方法,第一个参数是要扩展的类型,它放在 血s关键
字的后面。 这告诉编译器,这个方法是 Money类型的一部分。 在这个例子中,Money是要扩展的类
型。 在扩展方法中,可 以访 问所扩展类型的所有公有方法和属性。
在主程序中,AddToAmomtO方 法看起来像是另一个方法 。 它没有显示第一个参数,也 不能对
它进行任何处理。 要使用新方法,需 要执行如下调用,这与其他方法相同:
即使扩展方法是静态的,也要使用标准的实例方法语法。 注意这里使用 cash1实 例变量来调用
AddToAmountO,而 没有使用类型名。
如果扩展方法与类 中的某个方法同名,就从来不会调用扩展方法 。 类中已有的任何实例方法
优先
You can reach me by surfing the web ---- huntjobs.cn,or sending e-mails to me,Here is my qq MailBox:1424870395@qq.com