sealed class PI
{
public static float number;
static PI()
{ number = 3.141592653F; }
static public float val()
{ return number; }
}
公共静态和静态公共有什么区别?它们可以按任何顺序使用吗?
我如何使用static public float val()
?
一旦初始化类,它会立即执行吗?
答案 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();
因为类只有静态成员,所以该类应该是一个静态类,然后它永远不会被初始化。