public static vs static public - 有区别吗?

时间:2010-11-10 18:19:20

标签: c# .net

sealed class PI
{
  public static float number;
  static PI()
  { number = 3.141592653F; }
  static public float val()
  { return number; }
}
  1. 公共静态和静态公共有什么区别?它们可以按任何顺序使用吗?

  2. 我如何使用static public float val()

    一旦初始化类,它会立即执行吗?

6 个答案:

答案 0 :(得分:19)

没有区别。您可以按任意顺序指定它们。但是,我发现大多数开发人员倾向于使用公共静态而不是静态公共。

答案 1 :(得分:10)

嗯,这就像Person的名字=) 叫汤姆迈克或迈克汤姆,没有区别。

答案 2 :(得分:9)

关于修饰符的排序

它们可以按任何顺序使用。这只是您使用的风格选择。我总是首先使用可见性,而大多数其他代码也是如此。

关于第二个问题:

static public float val()

这只是一个静态功能。你用PI.val()来称呼它。你只需要一个类的实例来调用它,但是直接在类上调用它。静态函数不接收this引用,不能是虚拟的,它就像非OOP语言中的函数一样,除了它使用类作为命名空间。

答案 3 :(得分:7)

没有区别。他们的命令对彼此并不重要

答案 4 :(得分:5)

要回答你的第二个问题,它应该写成

public static class Pi
{
    private static float pi = 0;

    public static float GetValue()
    {
        if (pi == 0)
            pi = 3.141592653F;   // Expensive pi calculation goes here.

        return pi;
    }
}

如此称呼它:

float myPi = Pi.GetValue();

编写这样一个类的原因是缓存该值,从而节省了对该方法的后续调用的时间。如果获得pi的方式需要大量时间来执行计算,那么您只需要进行一次计算。

答案 5 :(得分:4)

关于第二个问题:该方法在没有类实例的情况下可用,因此可以调用它:

PI.val();

因为类只有静态成员,所以该类应该是一个静态类,然后它永远不会被初始化。