在C#中,哪些類型可以聲明爲const
?什麼類型可以聲明爲const?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
有沒有我可以參考的綜合清單?
在C#中,哪些類型可以聲明爲const
?什麼類型可以聲明爲const?
const int i = 0;
const double d = 0;
const decimal m = 0;
const referenceType = null;
有沒有我可以參考的綜合清單?
嗯MSDN明確指出
常量表達式是可以在 編譯時完全求值的表達式。因此, 引用類型的常量唯一可能的值是string和null。
從10.4節的C#語言規範。這些是可以使用的類型。
在恆定聲明中指定必須爲sbyte,字節的類型, 短,USHORT,INT,UINT,長,ULONG,炭,浮點,雙精度,小數, 布爾,字符串,枚舉類型,或參考類型。每個 常數表達式必須得到目標類型或類型 可以由一個隱式轉換被轉換爲目標類型的一個值
在C#的上下文中,常數是一種類型的字段或本地變量 ,它們的值在編譯時設置,並且在運行 時刻不能更改。它通過具有名稱,值和存儲位置而與變量類似。然而,它與變量的不同之處在於其在應用程序中只有一次初始化的特性。使用關鍵字「const」聲明一個常量爲 。
Constants (C# Programming Guide)
只有內置類型(System.Object的除外)的C#可以聲明爲常量。有關內置類型的列表,請參閱Built-In Types Table (C# Reference)。
我不認爲這些文檔很有意義(規範)imo。 'System.Object'和任何其他引用類型可以聲明爲'const'(除非它們指向null)。 – nawfal
從MSDN:
常量是它們在編譯時已知的,並且不用於修改不變值程序的生命。常量用const修飾符聲明。 只有C#內置類型(不包括System.Object)可以聲明爲const。有關內置類型的列表,請參閱內置類型表(C#參考)。用戶定義的類型,包括類,結構體和數組,不能是const。使用readonly修飾符來創建一個在運行時(例如在構造函數中)初始化一次的類,結構或數組,然後不能更改。
C#不支持const方法,屬性或事件。
我不認爲這些文檔很有意義(規範)imo。 'System.Object'和任何其他引用類型可以聲明爲'const'(除非它們指向null)。 – nawfal
是的,這是規範10.4節!接受這個正確性! – nawfal