【C#】 定義常數時readonly好還是const好

/
0 Comments

以前一直弄不清楚const和readonly究竟有什麼不同,這次就把這個問題弄清楚並且記錄一下。

簡單的定義如下:

readonly為執行階段常數
public static readonly int Start = 0;


const為編譯時期常數
public const int End = 10;


兩種方式有相同的意義但背卻有不同的運作行為,使用不當的話可能會造成一些問題發生。

差異:
1.const僅能用於數字和字串,而readonly可以是任意型態。
2.const能在方法中使用,readonly不行。(常數不應該是宣告在方法裡)
3.const是在編譯時期產生的,readonly是在運行時產生的

若今天你改了const的參數值,很直覺的我只修改了常數並編譯成dll,然後將dll發佈(將dll檔案copy到.exe相對應資料夾),然後直接執行.exe,會發現你的參數值還是舊的! 必須重新編譯你的exe專案才會更新。

結論:

我們在定義常數的時候會建議使用readonly而不是const,雖然說使用const的效能比使用static readonly效能好一些,但是整體的靈活性及方便性都是static readonly勝出的。


You may also like

沒有留言: