常數 是編譯期確定、執行期不可變更的值。與變數不同,常數的值在編譯階段即內嵌至呼叫端 IL 中,因此不能用於參考型別(除 string 與 null),也無法表示執行期才能決定的值。
attributes constant-modifiers const type constant-declarators;
new、public、protected、internal、privatestatic(常數隱含靜態)、readonly(執行期常數)、volatile僅限編譯期可計算的型別:
sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, boolstringenum)nullpublic const double X = 1.0, Y = 2.0, Z = 3.0; // 同型別可合併
const int MaxCount = 100;
const string AppName = "MyApp";
readonly)| 特性 | const | readonly |
|---|---|---|
| 評估時機 | 編譯期 | 執行期(建構函式) |
| 可指派次數 | 宣告時唯一 | 宣告時或建構函式中 |
| 型別限制 | 嚴格(見上) | 任意型別 |
| 版本控制影響 | 呼叫端 IL 內嵌值,需重編譯 | 執行期讀取,不需重編譯 |