为什么Microsoft为自己的类使用扩展方法?

Jos*_*sso 6 c# extension-methods

为什么Microsoft对它创建的类使用扩展方法; 而不是只是将方法添加到类,或创建子类?

Mic*_*eld 12

微软这样做有很多原因.最大的两个是:

  1. 扩展方法适用于接口,而不仅仅是类.如果Microsoft简单地将Linq方法直接添加到IEnumerable,那么它将需要该接口的每个具体实现来实现这些方法.通过使用现有的IEnumerable <>行为编写扩展方法,每个IEnumerable <>类都会自动获取它们.

  2. 对于3.0和3.5框架,核心System.dll是2.0库.在3.0和3.5中的所有新内容都添加在System.Core或其他相关库中.例如,获取3.5中存在但不存在于2.0中的List <>类中的新方法的唯一方法是在3.5库中提供扩展方法.