假日在家看書 (Java 語言 ) ,在使用 static final 變數時,可以使用針對該變數使用 Switch{} 陳述式,但使用 C# 的 staitc readonly 時卻無法使用,錯誤訊息為 [ 必須為 常數值 const ] 。 為此我看了 msdn 作一下小研究, const 與 static readonly 都是 唯讀 變數,系統啟動時就存在,其生命週期等同 Application 變數。 常數 const 在宣告時就必須 初始它的值且是固定不可變的 ,而 static readonly 則是宣告時不強制初始值,但既然已經宣告作 readonly 之後當然也不能再給值,所以一般若宣告 static readonly 時一定會給初始值,不過 其初始值是可變的 。 程式碼比較如下 : const int delayMonth=1; //正確 const int delayMonth=DateTime.Now.Month; //錯誤 因為DateTime.Now.是可變的 例如 : 本月是 7 下一個月是 8 ,常數必須是一個 明確的固定值 而不是隨著外在因素變動。 static readonly int delayMonth= DateTime.Now. Month ;// 正確 初始值是可變的 由上述的兩個特性作比較的話 switch 的陳述式比須針對 不可變動值才能作 case 的動作 ,所以 static readonly 並不適用,只能使用 const 變數 。 參考 ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.cht/dv_csref/html/79eb447c-117b-4418-933f-97c50aa472db.htm