非静态泛型类中没有扩展方法?

时间:2013-07-23 18:24:05

标签: c# .net extension-methods static-classes

为什么不能在非静态的类中声明/实现Extension-Method?

我知道扩展方法对于非实例化类型是无用的。但为什么不在可实例化的类中实现呢?这是什么原因?这是技术问题还是仅仅是为了更快地找到方法或强制更好的软件设计?

2 个答案:

答案 0 :(得分:1)

  

如果要保证它,可以将类定义为静态   无法实例化,无法派生或作为基础   另一种类型,只能包含静态成员。

http://msdn.microsoft.com/en-us/library/vstudio/79b3xss3.aspx

在子类中使用扩展方法编辑:静态新建,这将是一个真正的痛苦。

  

与所有类类型的情况一样,静态的类型信息   .NET由.NET Framework公共语言运行库(CLR)加载   当加载引用该类的程序时。

初始化优先级链上的静态类更高,使得实现更有效。

答案 1 :(得分:0)

LINQ只需要静态,非泛型,非嵌套类中的扩展方法才能工作,这就是它的设计和实现方式。如果它是非静态的,通用的嵌套类所必需的,那么它就会以这种方式实现。