c# 常量和字段
更新時間:2012年10月29日 13:55:20 作者:
常量:是一個特殊的符號,有一個從不變化的值
它的值是在編譯時確定的。編譯器將常量保存到程序集的元數(shù)據(jù)中,所有只能是編譯器認識的基元類型作為常量。
常量被看成類的一部分,是看出靜態(tài)成員。
代碼引用一個常量符號,會在定義常量的元數(shù)據(jù)中查找該符號,提取之,并嵌入代碼,生成的IL中是值本身。
在c#中使用的是const關(guān)鍵字。
字段:已一種數(shù)據(jù)成員,可以容納任何的數(shù)據(jù)類型,不僅僅想常量一樣只能存儲基元類型。
CLR支持類型字段和實例字段
類型字段:用于容納字段數(shù)據(jù)的動態(tài)內(nèi)存是在類型對象中分配的,
而類對象是在類型加載到一個AppDomain中創(chuàng)建的。
通常是在引用該類型的任何方法首次進行JIT編譯的時候。
實例字段:用于容納字段數(shù)據(jù)的動態(tài)內(nèi)存是在構(gòu)造類型的實例時分配的。
由于字段存儲在動態(tài)內(nèi)存中,所以它們的值在運行時才獲取,字段解決了常量存在版本控制的問題。
CLR支持readonly 字段 和 read/write字段
read、write字段可以在代碼中多次改變。
readonly字段只能在構(gòu)造器方法中寫入,也就是在對象首次創(chuàng)建的時候。
編譯器和驗證機制會確保readonly字段不會在構(gòu)造器以外的地方寫入。
在c#中允許內(nèi)聯(lián)初始化語法來初始化類的字段。c#實際是在構(gòu)造器中對字段進行初始化的,內(nèi)聯(lián)代碼只是語法糖。
常量被看成類的一部分,是看出靜態(tài)成員。
代碼引用一個常量符號,會在定義常量的元數(shù)據(jù)中查找該符號,提取之,并嵌入代碼,生成的IL中是值本身。
在c#中使用的是const關(guān)鍵字。
字段:已一種數(shù)據(jù)成員,可以容納任何的數(shù)據(jù)類型,不僅僅想常量一樣只能存儲基元類型。
CLR支持類型字段和實例字段
類型字段:用于容納字段數(shù)據(jù)的動態(tài)內(nèi)存是在類型對象中分配的,
而類對象是在類型加載到一個AppDomain中創(chuàng)建的。
通常是在引用該類型的任何方法首次進行JIT編譯的時候。
實例字段:用于容納字段數(shù)據(jù)的動態(tài)內(nèi)存是在構(gòu)造類型的實例時分配的。
由于字段存儲在動態(tài)內(nèi)存中,所以它們的值在運行時才獲取,字段解決了常量存在版本控制的問題。
CLR支持readonly 字段 和 read/write字段
read、write字段可以在代碼中多次改變。
readonly字段只能在構(gòu)造器方法中寫入,也就是在對象首次創(chuàng)建的時候。
編譯器和驗證機制會確保readonly字段不會在構(gòu)造器以外的地方寫入。
在c#中允許內(nèi)聯(lián)初始化語法來初始化類的字段。c#實際是在構(gòu)造器中對字段進行初始化的,內(nèi)聯(lián)代碼只是語法糖。
相關(guān)文章
Winform窗體縮放下使用剪切板功能出現(xiàn)頁面閃動解決分析
這篇文章主要介紹了Winform窗體縮放下使用剪切板功能出現(xiàn)頁面閃動解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11