sealed class PI
{
public static float number;
static PI()
{ number = 3.141592653F; }
static public float val()
{ return number; }
}
Run Code Online (Sandbox Code Playgroud)
公共静态和静态公共有什么区别?它们可以按任何顺序使用吗?
我该怎么用static public float val()?
一旦初始化类,它会立即执行吗?
关于修饰符的排序
它们可以按任何顺序使用.这只是您使用的风格选择.我总是首先使用可见性,而大多数其他代码也是如此.
关于第二个问题:
static public float val()
Run Code Online (Sandbox Code Playgroud)
这只是一个静态函数.你打电话给它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;
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
float myPi = Pi.GetValue();
Run Code Online (Sandbox Code Playgroud)
编写这样一个类的原因是缓存该值,从而节省了对该方法的后续调用的时间.如果获得pi的方式需要大量时间来执行计算,那么您只需要进行一次计算.