• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# 扩展方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近公司需要梳理开发规范,我负责写 扩展方法 这一部分。

所以特地写篇博文来准备一下。

 

MSDN:  https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

https://www.cnblogs.com/pengze0902/p/6110094.html

https://www.cnblogs.com/Matcha/archive/2016/03/31/5312288.html

 

特别基础的,怎么实现怎么调用,就不说了,着重看一下有哪些特殊的地方。

 

我对扩展类命名的习惯是类命名为原类名加上 Ex 后缀,Ex 代表的是 Extension 扩展。

 

可以使用扩展方法来扩展类或接口,但不能重写扩展方法。与接口或类方法具有相同名称和签名的扩展方法永远不会被调用(即扩展方法不会覆盖类中原有的方法,这也是一个风险)。

编译时,扩展方法的优先级总是比类型本身中定义的实例方法低。

 

使用场景:

1.一般大家都会写一个 Util/Common/xxxHelper 之类的的工具类,里面会有 例如 StringHelper、DateTimeHelper 等等,每个Helper里面有多个static的通用方法,然后调用的时候就是StringHelper.GetNotNullStr("aa"); 这样。还有一种普通的用法就是new 一个对象,通过对象去调用类里面的非static方法。这通常来说意味着一串的代码,这个时候如果我们适当的使用扩展方法来写这些方法,调用就会简短很多,例如 "aa".GetNotNullStr(); 。

2.一般来说我们在开发的过程中,总会需要调用第三方类库,或是使用一些我们没有权限修改的类,这时候使用扩展方法就是一个不错的选择,但若第三方类库或原有类添加了同名方法,那么扩展方法就会被覆盖。

3.可以使用扩展方法来实现 链式调用。例如 LINQ。

优点:

1.使代码变得更加简洁,调用简单。

2.不会破坏原有类的封装性,只有引入了扩展方法命名空间的才可以使用。

缺点:

1.存在被覆盖的可能。

 

关于扩展方法的一些建议:

1.注意对扩展目标的把控,对 List<T> 所做的扩展 是否可以改为对 IList<T> 或 IEnumerable<T>.

2.注意扩展方法的数量和分类,数量较多时可考虑分类。例如 转换类型的扩展类,判断边界的扩展类。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】【WebService】.NETC#创建WebService服务发布时间:2022-07-13
下一篇:
C#访问修饰符发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap