哪个更好?私人静态与私人

时间:2011-01-15 09:47:48

标签: c# .net

在此代码示例中:

public class SuperMan {
    private static bool IsProper(decimal x) {
        return x > 31.0m && x < 45.0m;
    }

    public bool CheckStuff(string a, string b, string c) {
        // lots of code, some of which introduces a variable x
        return IsProper(x) && /* other conditions */;
    }
}

IsProper(..)应该是'私有静态'还是'私有'。假设:

  1. IsProper(..)不需要访问任何实例状态(即使将来也是如此。)
  2. 我们并不关心两种选择之间的性能差异(我们不应该做的事情之一就是在没有实际测量的情况下猜测性能并在没有需要的情况下进行优化。)

3 个答案:

答案 0 :(得分:4)

可以是静态的,因为它似乎不需要对SuperMan类及其成员做任何事情。但是你应该问问自己该函数是否属于那个类。

如果您正在检查十进制是否为SuperMan 的正确小数,那么它就属于那里。但在这种情况下我不会让它变得静止。有可能您稍后需要使用SuperMan属性替换该常量值。

答案 1 :(得分:2)

使IsProper成为实例成员的原因:

  • IsProper需要继承类中的另一个实现
  • IsProper将来可能需要访问会员

使IsProper成为静态成员的原因:

  • 使其成为实例成员会对性能造成很小的惩罚。
  • 如果您只需要创建一个类的实例来调用IsProper,那么您可以将其设为静态

答案 2 :(得分:0)

静态方法可能会更快一些,但另一方面,有时候重构可能会更难。