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

时间:2012-01-03 10:44:28

标签: c# extension-methods class-library

我确实经历了一些MSDN documentations。我发现那里也有扩展方法。

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

有什么好处?差异?

4 个答案:

答案 0 :(得分:3)

请注意,许多这些方法都在Interfaces上运行,这是使用扩展方法的完全合法的借口,即使对于Microsoft也是如此,因为接口本身不能有任何方法实现。

答案 1 :(得分:1)

名称建议的扩展方法扩展了目标类型的功能或可用性。

  1. 这些方法可以在类型已经发布后添加(比类型创作时间)。
  2. 他们可以由不同的人写作
  3. 扩展方法可以定位接口。 (替代方案可能是拥有这些方法的公共基类型或在每种类型中重新实现它们)
  4. 不同的人可以根据需要不同地扩展相同的类型。
  5. 正确使用扩展方法可以消除实际类型定义/实现中的正交混乱(而是在类型定义中关注类型的核心功能)。

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

答案 2 :(得分:1)

记录的扩展方法在IEnumerable<T>上定义,ObjectSet<T>实现。

它们已记录在案,因此您知道可以使用它们。

作为扩展方法,他们最终免费扩展实现此接口的任何类型。

答案 3 :(得分:0)

我认为这可能是一个“营销问题”。建议BCL消费者(我们)使用扩展方法的方法,我们需要它们。

从可用性的角度来看,没有任何善意,imo,将它们整合到BCL