扩展方法

Posted 帅刺猬之家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展方法相关的知识,希望对你有一定的参考价值。

有许多扩展类的方式。 如果有类的源代码,继承α 口 第 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,而 没有使用类型名。
如果扩展方法与类 中的某个方法同名
,就从来不会调用扩展方法 。 类中已有的任何实例方法
优先

以上是关于扩展方法的主要内容,如果未能解决你的问题,请参考以下文章

VS中添加自定义代码片段——偷懒小技巧

有人可以在快速数组中给出“如果不存在则追加”方法的片段吗?

如何在扩展另一个文件的 django 模板中使用带有动态内容的 html 块片段?

从父片段调用方法

调用 replace() 方法后片段闪烁/闪烁

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率