因此,扩展方法用于为类添加功能,而无需修改其当前代码。我读过LINQ运算符是用这种方式定义的。
我的问题是,当我们知道每个实现IEnumerable的类都需要LINQ运算符时,为什么不直接在IEnumerable接口中定义LINQ运算符?为什么要使用扩展方法?
谢谢。
最佳答案
原因有三点:
通过使用组合并设置新的扩展方法语法; Microsoft可以在Enumerable接口上增加功能,而不必担心IEnumerable的现有使用者,并且这些实现都不需要实现整个LINQ运算符集,如果将它们嵌入到IEnumerable接口中,则他们将不必执行。
IEnumerable
和IEnumerable<T>
的名称很简单:提供用于迭代集合的通用方法的接口。这样,从现在到以后需要遍历集合的每个人都可以使用此接口。如果他们开始向该接口添加与枚举无关的内容,那么消费者将开始感到困惑。 “这又是为了什么?”软件开发中的另一个原则是“单一职责原则”(即SOLID中的S),当您拥有负责两个或多个事物的类或接口时,是时候重新考虑为什么存在该接口了。