最近要給學(xué)校軟件小組新成員講幾次課,所以把很多以前懶得學(xué)習(xí)的和模糊不清的知識(shí)點(diǎn),重新學(xué)習(xí)了一下。
MSDN是這樣解釋的:
readonly關(guān)鍵字與 const關(guān)鍵字不同。const字段只能在該字段的聲明中初始化。readonly字段可以在聲明或構(gòu)造函數(shù)中初始化。因此,根據(jù)所使用的構(gòu)造函數(shù),readonly字段可能具有不同的值。另外,const字段為編譯時(shí)常數(shù),而readonly字段可用于運(yùn)行時(shí)常數(shù).
什么是編譯時(shí)常數(shù),什么是運(yùn)行時(shí)常數(shù)呢。我想做下面的實(shí)驗(yàn),關(guān)于readonly和const你會(huì)理解的更好
在項(xiàng)目外新建個(gè)類庫,類庫中的一個(gè)TestClass類定義一個(gè)const字段和一個(gè)readonly字段
public const int ParamOne=100;
public static readonly int ParamTwo=100;
在控制臺(tái)項(xiàng)目調(diào)用并輸出兩個(gè)值,預(yù)期效果當(dāng)然是100,100;
下面所做的將會(huì)幫助你理解const和readonly的區(qū)別所在。
修改類庫中的ParamOne=50;ParamTwo=50;
不要重新生成整個(gè)項(xiàng)目,僅重新生成類庫,bin目錄下找到dll文件,復(fù)制到控制臺(tái)bin目錄下(目的是不重新編譯生成控制臺(tái)的項(xiàng)目)
雙擊控制臺(tái)的exe文件,接下來會(huì)發(fā)生什么?
輸出的值是100和50;
也就是說 const的值沒有改變,但是readonly的值改變了。
原因是什么呢?
const的值是保存到元數(shù)據(jù),直接嵌入代碼,而readonly的值,則是運(yùn)行時(shí)賦值。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注