zoukankan      html  css  js  c++  java
  • C#

    允许向现有类型"添加"方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。类A需要新增一个方法,但类A是密封的或源代码不可见,即不能修改类A,此时扩展方法允许在另一个类B中利用类A的公有可用成员实现类A需要新增的方法。

    • 扩展方法必须是静态的,所在类也必须是静态的;
    • 被扩展类型必须作为第一个参数,必须用 this 修饰;
    public static class ExtendMyClass { 
       public static 返回类型 Function(this MyClass mc) { 
          // 调用MyClass的公共成员实现新增方法 
       } 
     } 
    

    调用:mc.Function();,如果没有this,只能以ExtendMyClass.Function(mc);方式调用。
    扩展方法还可以结合泛型类,允许将(扩展)类中的静态方法关联到不同的泛型类上。扩展接口时,利用扩展方法比继承接口(会强制要求实现接口下的所有方法)更方便。但是,扩展方法的优先级总是比被扩展类型本身中定义的同名实例方法低,且被扩展类型的子类不能继承其父类型的扩展方法。

    • 将静态方法转成扩展方法,扩展方法本质上是静态方法;
    • 编写帮助类;
    • 为 Linq 服务,实现链式编程;

    参考:谈扩展方法的理解C#扩展方法奇思妙想之扩展方法系列

  • 相关阅读:
    端口
    log4j常用配置以及日志文件保存位置
    jbpm node signal
    JBPM3.2 TABLE
    JBPM TaskInstance 对象创建过程
    【转】链接脚本
    快速平方根倒数
    GPS开发之知识储备(NMEA0183)
    HEX文件格式和其校验算法
    NRF51822之IIC(MEMS_LIS2DH12)
  • 原文地址:https://www.cnblogs.com/wjcx-sqh/p/10500491.html
Copyright © 2011-2022 走看看