共用方式為


常數 (C# 程式設計手冊)

常數是編譯時期已知的不可變值,不會變更程式生命週期。 常數會以 const 修飾詞宣告。 只有 C# 內建型態 可以宣告為 const。 以外的 String 參考型別常數只能使用 Null 值初始化。 使用者定義型別,包括類別、結構和陣列,不能是 const。 使用 只讀 修飾詞來建立類別、結構或陣列,這些只在執行時期(例如在建構函式中)初始化一次,之後便無法變更。

C# 不支援 const 方法、屬性或事件。

列舉類型可讓您定義整數內建型別的具名常數(例如intuintlong等等)。 如需詳細資訊,請參閱 enum

常數必須在宣告時初始化。 例如:

class Calendar1
{
    public const int Months = 12;
}

在此範例中,常數 Months 一律為 12,即使類別本身也無法變更。 事實上,當編譯程式在 C# 原始程式碼中遇到常數識別碼時(例如 Months,),它會將常值直接取代為產生的中繼語言 (IL) 程式代碼。 因為運行時間沒有與常數相關聯的變數位址,所以欄位無法以參考方式傳遞,const而且無法在表達式中作為 l 值使用。

備註

當您參考其他程式代碼中定義的常數值,例如 DLL 時,請小心。 如果新版本的 DLL 定義常數的新值,您的程式仍會保留舊的常值,直到針對新版本重新編譯它為止。

相同類型的多個常數可以同時宣告,例如:

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

如果表達式未建立循環參考,則用來初始化常數的表達式可以參考另一個常數。 例如:

class Calendar3
{
    public const int Months = 12;
    public const int Weeks = 52;
    public const int Days = 365;

    public const double DaysPerWeek = (double) Days / (double) Weeks;
    public const double DaysPerMonth = (double) Days / (double) Months;
}

常數可以標示為 publicprivateprotectedinternalprotected internalprivate protected。 這些存取修飾詞會定義 類別的使用者如何存取常數。 如需詳細資訊,請參閱 存取修飾子

常數的存取方式就像是 靜態 字段一樣,因為類型的所有實例的常數值都相同。 您不使用 static 關鍵詞來宣告它們。 不在定義常數之類別中的運算式必須使用類別名稱、句號和常數名稱來存取常數。 例如:

int birthstones = Calendar.Months;

C# 語言規格

如需詳細資訊,請參閱<C# 語言規格>。 語言規格是 C# 語法和使用方式的最終來源。

另請參閱