2013-12-14 130 views
1

在C#中,哪些類型可以聲明爲const什麼類型可以聲明爲const?

const int i = 0; 
const double d = 0; 
const decimal m = 0; 
const referenceType = null; 

有沒有我可以參考的綜合清單?

回答

4

MSDN明確指出

常量表達式是可以在 編譯時完全求值的表達式。因此, 引用類型的常量唯一可能的值是string和null。

從10.4節的C#語言規範。這些是可以使用的類型。

在恆定聲明中指定必須爲sbyte,字節的類型, 短,USHORT,INT,UINT,長,ULONG,炭,浮點,雙精度,小數, 布爾,字符串,枚舉類型,或參考類型。每個 常數表達式必須得到目標類型或類型 可以由一個隱式轉換被轉換爲目標類型的一個值

+0

是的,這是規範10.4節!接受這個正確性! – nawfal

0

在C#的上下文中,常數是一種類型的字段或本地變量 ,它們的值在編譯時設置,並且在運行 時刻不能更改。它通過具有名稱,值和存儲位置而與變量類似。然而,它與變量的不同之處在於其在應用程序中只有一次初始化的特性。使用關鍵字「const」聲明一個常量爲 。

Constants (C# Programming Guide)

只有內置類型(System.Object的除外)的C#可以聲明爲常量。有關內置類型的列表,請參閱Built-In Types Table (C# Reference)

  • 布爾字節爲sbyte炭小數雙浮INT UINT長ULONG對象 短USHORT串
+0

我不認爲這些文檔很有意義(規範)imo。 'System.Object'和任何其他引用類型可以聲明爲'const'(除非它們指向null)。 – nawfal

1

從MSDN:

常量是它們在編譯時已知的,並且不用於修改不變值程序的生命。常量用const修飾符聲明。 只有C#內置類型(不包括System.Object)可以聲明爲const。有關內置類型的列表,請參閱內置類型表(C#參考)。用戶定義的類型,包括類,結構體和數組,不能是const。使用readonly修飾符來創建一個在運行時(例如在構造函數中)初始化一次的類,結構或數組,然後不能更改。

C#不支持const方法,屬性或事件。

完整鏈接:http://msdn.microsoft.com/en-us/library/ms173119.aspx

+0

我不認爲這些文檔很有意義(規範)imo。 'System.Object'和任何其他引用類型可以聲明爲'const'(除非它們指向null)。 – nawfal

相關問題