为什么C#类库中的扩展方法

dot*_*ner 7 c# extension-methods class-library

我确实通过了一些MSDN文档.我发现那里也有扩展方法.

我不明白,为什么这些基类库有扩展方法?什么时候他们可以被添加到特定的类库本身?

有什么好处?区别 ?

Vin*_*ayC 1

顾名思义,扩展方法扩展了目标类型的功能或可用性。

  1. 这些方法可以在类型发布后(在类型创作时间之前)添加。
  2. 它们可以由不同的人群编写
  3. 扩展方法可以针对接口。(替代方案是拥有一个具有这些方法的通用基类型,或者在每种类型中重新实现它们)
  4. 不同的人可以根据自己的需要以不同的方式扩展同一类型。

正确使用扩展方法可以消除实际类型定义/实现中的正交混乱(而不是关注类型定义中类型的核心功能)。

以 LINQ 为例 - 通过向 提供扩展方法IEnumerable,它可以针对大量已发布的类型(以及将来可能编写的大量类型);它分离了正交关注点,例如查询类型与实际类型。