簡體   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