zoukankan      html  css  js  c++  java
  • 扩展方法

    有许多扩展类的方式。 如果有类的源代码,继承α 口 第 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
  • 相关阅读:
    49.把字符串转发为整数(python)
    48.不用加减乘除做加法(python)
    47.1+2+3+...+n(python)
    46.孩子们的游戏(python)
    45.扑克牌顺子(python)
    44.翻转单词序列(python)
    43.左旋转字符串(python)
    42.和为S的两个数字(python)
    41.和为S的连续整数序列(python)
    39.平衡二叉树(python)
  • 原文地址:https://www.cnblogs.com/HedgehogBlog/p/7269528.html
Copyright © 2011-2022 走看看