const vs readonly

C#知識系列

        //執行期常數
        public static readonly int StartValue = 105;
        //編譯期常數
        public const int EndValue = 120;

兩者差異
1.const只能數字和字串,readonly則是任意型態。 
2.const能在方法中使用,readonly不行。(常數不能是宣告在方法裡) 
3.const是在編譯時期,readonly是在運行時產生 

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

建議偏向執行期常數,而非編譯期常數。
1.const編譯期常數效率快於執行期常數 static readonly 
2.static readonly 彈性部分較佳

readonly部分

1.readonly筆者會用class設計中,進行在建構子注入, readonly 在建構子指派值之後,就不能更改。
2.readonly可以在建構子裡面修改。
3.readonly不須提供初始值 readonly可以先定義狀態、在建構子中在賦予值。 

 

老E隨手寫