Const 變數與Static readonly的不同

  • 10994
  • 0
  • C#
  • 2009-06-07

摘要:Const 變數與Static readonly 的不同

假日在家看書(Java語言),在使用static  final變數時,可以使用針對該變數使用Switch{}陳述式,但使用C#staitc readonly時卻無法使用,錯誤訊息為[必須為常數值const]

  為此我看了msdn作一下小研究, conststatic 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