在了解這兩個關鍵字的時候我們先來了解一下靜態常量和動態常量。
指編譯器在編譯時候會對常量進行解析,並將常量的值替換成初始化的那個值。
動態常量的值則是在執行的那一刻才獲得的,編譯器編譯期間將其標示為唯讀常量,而不用常量的值代替,這樣動態常量不必在宣告的時候就初始化,而可以延遲到建構函式中初始化。
const修飾的常量是屬於靜態常量;而readonly修飾的常量屬於動態常量。那麼區別可以通過靜態常量與動態常量的特性來說明:
a例項 name 在建構函式中被賦值後就不可變,下面的**在編譯後會報錯:
using編譯結果如下:system;
namespace
thisdemo
}public
class
a
}public
class
b }}
}執行結果:
道理也比較簡單,就是static readonly是動態常量,變數的值在編譯期間不予以解析,所以開始都是預設值,像a與b都是int型別,故都是0。而在程式執行到a=b*10;所以a=0*10=0,程式接著執行到b=10這句時候,才會真正的b的初值10賦給b。
C 之基礎知識01
1 慣用發 屬性開頭字母大寫,字段開頭字母小寫 2 欄位和屬性的區別 屬性看似字段,不是字段,可以進行對非法值的控制,可以設定唯讀 class person set public void sayhello age 3 set get內部其實就是get set 方法 4 只用set或者只用get就可...
C 基礎知識複習 const關鍵字
沒事翻了下c primer,開卷有益吧,加深下印象,留個複習記錄如下 1 const 指標與指向 const物件的指標 const int p 指向const int 的指標 int const p 指向int的const指標 記憶方法 從右往左讀,讀作is a pointer to。2 const...
廣州尚觀科技 c 基礎知識 const
const關鍵字表示限定為唯讀 const int p 表示不能通過指標變數 p來改變位址上的值 我們需要寫一函式僅僅是接收引數的位址,而不會改變它的值時,就可以使用 const.如乙個函式 void func conststudent p 這樣反映出我們需傳遞 student變數的位址,函式裡面不...