博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# - 扩展方法
阅读量:4978 次
发布时间:2019-06-12

本文共 599 字,大约阅读时间需要 1 分钟。

允许向现有类型"添加"方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。类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 服务,实现链式编程;

参考:; ; ;

 

转载于:https://www.cnblogs.com/wjcx-sqh/p/10500491.html

你可能感兴趣的文章
Hie with the Pie
查看>>
2019.01.04 bzoj2962: 序列操作(线段树+组合数学)
查看>>
ThinkPHP5集成支付宝手机网站支付接口
查看>>
hdu 3584 Cube (三维树状数组,更新区间,查询单点)
查看>>
lvs基础
查看>>
接口测试 rest-assured 使用指南
查看>>
Java 8简明教程
查看>>
Java线程池使用说明
查看>>
ectouch第十一讲 之 ECTouch 菜单里如何添加文章链接
查看>>
adb logcat
查看>>
VME总线 分类: 生活百科 2014-06-...
查看>>
数字信号相关和卷积
查看>>
[CSAPP]Bufbomb实验报告
查看>>
NaviActivity实现
查看>>
将已安装win10的系统重装(格式化C盘)
查看>>
C# 中的委托和事件
查看>>
CSS基础学习 17.CSS动画
查看>>
ATM机
查看>>
java反射
查看>>
js表单反显
查看>>