为什么非静态类中的静态方法不能作为扩展方法?

Y. *_*ham 20 .net c# extension-methods static

可能重复:
扩展方法要求类是静态的

在.NET中:

不为什么静态方法非静态类是一个扩展方法?

Str*_*ior 26

Eric Lippert可能会对这个问题给出一个非常好的答案,但它的要点可能是:

我们认为如果我们限制你必须寻找扩展方法的位数,那么程序员和编译器都会更容易.

此策略倾向于强制用户将所有扩展方法放入为此目的指定的几个特定类中.

  • 对我来说似乎是一种随意的限制.扩展实例方法是语法糖,而不是为什么静态方法不能稍微变甜的原因. (12认同)
  • 你提出的"要点"是一个非常好的总结,加上Ed指出,几乎所有不需要使LINQ工作的功能都被削减了. (9认同)
  • @Hemal:我认为扩展方法只需要一些任意限制.它使语法糖不像语法可卡因一样被使用. (4认同)
  • @Hemal:好处是实例级扩展方法更加自然和方便,并且需要它们才能使LINQ工作.LINQ不需要静态扩展方法.这是一个重复的问题,阅读原文和Eric Lippert的回复. (2认同)