public static vs static public - 有区别吗?

l--*_*''' 11 .net c#

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

  2. 我该怎么用static public float val()

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

Jes*_*det 19

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

  • 是.按惯例,首先是辅助功能修改器.总是. (7认同)

Sin*_*ton 10

嗯,这就像一个人的名字=)叫汤姆迈克或迈克汤姆,没有区别.

  • 除非你是Sing Confu,否则他们会叫你Confu Sing. (9认同)

Cod*_*aos 9

关于修饰符的排序

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

关于第二个问题:

static public float val()
Run Code Online (Sandbox Code Playgroud)

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


Jar*_*Par 7

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


Rob*_*vey 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

float myPi = Pi.GetValue();
Run Code Online (Sandbox Code Playgroud)

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