public static vs static public – 有区别吗?

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

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

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

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

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

关于修饰符的排序

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

关于第二个问题:

 static public float val() 

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

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

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

 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的方式需要大量时间来执行计算,那么您只需要进行一次计算。

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

 PI.val(); 

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