常數 (readonly 與 const)

常數 (readonly 與 const)

參考: http://www.dotblogs.com.tw/yc421206/archive/2011/06/06/27232.aspx

readonly 為執行階段常數

Ex: public static readonly int Start = 0;

const 為編譯時期常數

Ex: public const int End = 10;

 

兩種方式有相同的意義但背卻有不同的運作行為,使用不當的話可能會造成一些問題發生,我們在定義常數的時候會建議使用 readonly 而不是 const,雖然說使用 const 的效能比使用 static readonly 效能好一些,但是整體的靈活性及方便性都是 static readonly 勝出的。

 

兩者差異:

1.const 僅能用於數字和字串,而readonly可以是任意型態。

2.const能在方法中使用,readonly不行。(常數不應該是宣告在方法裡)

3.const 是在編譯時期產生的,readonly是在運行時產生的

順帶一提, Java 的 final 關鍵字是編譯器在編譯時期就"確定" final variable 所記錄的值是什麼