3

Why is it no possible to declare / implement an Extension-Method in a class which isn´t static?

I know that an Extension-Method is for non-instantiable types useless. But why not implement it in a instantiable class? What is the reason for this? Is it a technical issue or just to find the methods faster or to force better software design?

4

2 回答 2

1

如果你想保证一个类不能被实例化,不能从另一个类型派生或用作另一种类型的基础,并且只能包含静态成员,则可以将其定义为静态类。

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

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

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

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

于 2013-07-23T18:30:00.867 回答
0

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

于 2013-07-23T18:30:33.273 回答