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