【问题标题】:public static vs static public - is there a difference?公共静态与静态公共 - 有区别吗?
【发布时间】:2010-11-10 18:19:19
【问题描述】:
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()

    类一初始化就执行吗?

【问题讨论】:

标签: c# .net


【解决方案1】:

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

【讨论】:

  • 是的。按照惯例,首先是可访问性修饰符。总是。
【解决方案2】:

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

【讨论】:

  • 除非你是 Sing Confu,他们叫你 Confu Sing。
【解决方案3】:

关于修饰符的排序

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

关于第二个问题:

static public float val()

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

【讨论】:

    【解决方案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 的方法需要大量时间来执行计算,您可能只想进行一次计算。

      【讨论】:

      • 除了 pi 不能为空,因为它是一个值类型
      【解决方案6】:

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

      PI.val();
      

      因为类只有静态成员,所以类应该是静态类,然后就永远无法初始化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-02
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-19
        相关资源
        最近更新 更多