Extension Methods documentation说:
对于您实施的类库,您不应该使用扩展名 避免增加程序集版本号的方法。
那么为什么.NET团队在Enumerable和Queryable中广泛使用它们?
为了寻找原因,我查看了 C#In Depth 的副本,在那里我感觉使用了扩展方法,因为:
这是正确的还是.NET团队面对他们自己的文档?是否有其他理由可以证明其使用的合理性?
答案 0 :(得分:5)
这不是整个句子。实际写的是:
对于您实施的类库,您不应使用扩展方法来避免增加程序集的版本号。如果要为拥有源代码的库添加重要功能,则应遵循标准的.NET Framework指南进行程序集版本控制。
(强调补充)
这意味着您应该避免在添加大量功能时向类添加扩展方法,只是为了不增加程序集版本。如果您要引入大量新功能,那么您应该在该程序集的新版本中执行此操作。
答案 1 :(得分:1)
这是因为LINQ适用于IEnumerable
,而不是集合的任何特定实现。如果它们是IEnumerable
定义的一部分,则必须实现自己的方法,并且它会不必要地膨胀接口。通过将LINQ放入扩展方法,您可以在自己创建的任何类上实现IEnumerable
,现有的LINQ方法也适用于它。