尽管有框架的指导原则,为什么扩展方法在LINQ中广泛使用?

时间:2014-06-13 17:48:26

标签: c# .net linq extension-methods

Extension Methods documentation说:

  

对于您实施的类库,您不应该使用扩展名   避免增加程序集版本号的方法。

那么为什么.NET团队在Enumerable和Queryable中广泛使用它们?

为了寻找原因,我查看了 C#In Depth 的副本,在那里我感觉使用了扩展方法,因为:

  • 您可以以可读的方式将它们链接在一起
  • 您可以将它们带入和移出范围

这是正确的还是.NET团队面对他们自己的文档?是否有其他理由可以证明其使用的合理性?

2 个答案:

答案 0 :(得分:5)

这不是整个句子。实际写的是:

  

对于您实施的类库,您不应使用扩展方法来避免增加程序集的版本号。如果要为拥有源代码的库添加重要功能,则应遵循标准的.NET Framework指南进行程序集版本控制。

(强调补充)

这意味着您应该避免在添加大量功能时向类添加扩展方法,只是为了不增加程序集版本。如果您要引入大量新功能,那么您应该在该程序集的新版本中执行此操作。

答案 1 :(得分:1)

这是因为LINQ适用于IEnumerable,而不是集合的任何特定实现。如果它们是IEnumerable定义的一部分,则必须实现自己的方法,并且它会不必要地膨胀接口。通过将LINQ放入扩展方法,您可以在自己创建的任何类上实现IEnumerable,现有的LINQ方法也适用于它。