const 的概念就是一個包含不能修改的值的變量,。
常數(shù)表達(dá)式是在編譯時可被完全計算的表達(dá)式,。因此不能從一個變量中提取的值來初始化常量。 如果 const int a = b+1;b是一個變量,,顯然不能再編譯時就計算出結(jié)果,,所以常量是不可以用變量來初始化的。 readonly 允許把一個字段設(shè)置成常量,,但可以執(zhí)行一些運算,,可以確定它的初始值。 因為 readonly 是在計算時執(zhí)行的,,當(dāng)然它可以用某些變量初始化,。 readonly 是實例成員,所以不同的實例可以有不同的常量值,這使readonly更靈活,。 readonly 關(guān)鍵字與 const 關(guān)鍵字不同,。 1. const 字段只能在該字段的聲明中初始化。 readonly 字段可以在聲明或構(gòu)造函數(shù)中初始化,。因此,,根據(jù)所使用的構(gòu)造函數(shù),readonly 字段可能具有不同的值,。 2. const 字段是編譯時常數(shù),,而 readonly 字段可用于運行時常數(shù)。 3. const 默認(rèn)就是靜態(tài)的,,而 readonly 如果設(shè)置成靜態(tài)的就必須顯示聲明,。 4.const 對于引用類型的常數(shù),可能的值只能是 string 和 null,。 readonly可以是任何類型 補充:關(guān)鍵字readonly 表示這個字段只能在執(zhí)行構(gòu)造函數(shù)的過程中被賦值,,或由初始化賦值語句賦值。
const修飾的字段必須通過定義它們的類來訪問,,const 成員是靜態(tài)的,,所以不需要static來修飾。
總結(jié) const只能在初期就使用常量初始化好,。對于每一次編譯后的結(jié)果,,const的值是固定的,而readonly的值是可以在運行的時候才確定值的~~ |
|