繁体   English   中英

公共静态与静态公共-有区别吗?

[英]public static vs static public - is there a difference?

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

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

    类初始化后是否立即执行?

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

好吧,这就像一个人的名字=)叫Tom Mike或Mike Tom,没什么区别。

关于修饰符的顺序

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

关于第二个问题:

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();

因为该类仅具有静态成员,所以该类可能应该是静态类,因此永远无法初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM