我应该将我的私有类方法设为静态吗?

Med*_*Man 15 .net c# asp.net coding-style

有没有最好的做法让类静态的私有方法?我有一个有几种方法的课.其中一些很容易变得静态,因为它们只是处理数据.

我应该让它们静止还是只是保持原样?这更像是一种风格问题吗?有性能考虑吗?

编辑: 方法可以做成静态,但应该吗?

And*_*are 37

如果方法不访问任何类型的状态,那么它们应该是静态的.

静态方法调用提供了比实例方法更高的性能,并且静态方法的存在告诉未来读者您的代码调用此方法将不会在该类型的当前实例的状态中产生任何副作用.

静态方法的性能提升来自于编译器不必发出callvirt指令来调用静态方法的事实.该callvirt指令对于实例调用很方便,因为它null在调用方法之前进行检查.但是,当您调用静态方法时,无需检查,null因此编译器可以自由发出call不检查的更快的指令null.


Dan*_*ark 6

正如 Dan Diplo 所说,如果它们可以静态化,那就应该静态化。这仅适用于私有静态方法(这就是您所询问的)。然而,对于公共方法,它们只会让类的用户感到困惑。仅当调用者在没有类实例的情况下使用公共方法时,才应将其设为静态,不将它们设为静态的性能损失是该死的。