const 的概念就是乙個包含不能修改的值的變數。或者:關於readonly,因為你是把乙個物件變數指定為readonly。你不可以在程式中變更變數指向的物件,但是可以改變物件內部儲存的內容。常數表示式是在編譯時可被完全計算的表示式。因此不能從乙個變數中提取的值來初始化常量。
如果 const int a = b+1;b是乙個變數,顯然不能再編譯時就計算出結果,所以常量是不可以用變數來初始化的。
readonly 允許把乙個字段設定成常量,但可以執行一些運算,可以確定它的初始值。
因為 readonly 是在計算時執行的,當然它可以用某些變數初始化。
readonly 是例項成員,所以不同的例項可以有不同的常量值,這使readonly更靈活。
readonly 關鍵字與 const 關鍵字不同。
1. const 字段只能在該字段的宣告中初始化。
readonly 字段可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 字段可能具有不同的值。
2. const 欄位是編譯時常數,而 readonly 欄位可用於執行時常數。
3. const 預設就是靜態的,而 readonly 如果設定成靜態的就必須顯示宣告。
4.const 對於引用型別的常數,可能的值只能是 string 和 null。
readonly可以是任何型別
* 需要注意的乙個問題是:
對於乙個 readonly 的 reference 型別,只是被限定不能進行賦值(寫)操作而已。而對其成員的讀寫仍然是不受限制的。
C 中 const 和 readonly 的區別
const 和 readonly 的區別,總是不太清楚,於是查了查資料。const 的概念就是乙個包含不能修改的值的變數。常數表示式是在編譯時可被完全計算的表示式。因此不能從乙個變數中提取的值來初始化常量。如果 const int a b 1 b是乙個變數,顯然不能再編譯時就計算出結果,所以常量是不...
C 中 const 和 readonly 的區別
const 和 readonly 的區別,總是不太清楚,於是查了查資料。const 的概念就是乙個包含不能修改的值的變數。常數表示式是在編譯時可被完全計算的表示式。因此不能從乙個變數中提取的值來初始化常量。如果 const int a b 1 b是乙個變數,顯然不能再編譯時就計算出結果,所以常量是不...
C 中 const 和 readonly 的區別
const 和 readonly 的區別,總是不太清楚,於是查了查資料。const 的概念就是乙個包含不能修改的值的變數。常數表示式是在編譯時可被完全計算的表示式。因此不能從乙個變數中提取的值來初始化常量。如果 const int a b 1 b是乙個變數,顯然不能再編譯時就計算出結果,所以常量是不...