c# 常量和字段
更新時(shí)間:2012年10月29日 13:55:20 作者:
常量:是一個(gè)特殊的符號(hào),有一個(gè)從不變化的值
它的值是在編譯時(shí)確定的。編譯器將常量保存到程序集的元數(shù)據(jù)中,所有只能是編譯器認(rèn)識(shí)的基元類型作為常量。
常量被看成類的一部分,是看出靜態(tài)成員。
代碼引用一個(gè)常量符號(hào),會(huì)在定義常量的元數(shù)據(jù)中查找該符號(hào),提取之,并嵌入代碼,生成的IL中是值本身。
在c#中使用的是const關(guān)鍵字。
字段:已一種數(shù)據(jù)成員,可以容納任何的數(shù)據(jù)類型,不僅僅想常量一樣只能存儲(chǔ)基元類型。
CLR支持類型字段和實(shí)例字段
類型字段:用于容納字段數(shù)據(jù)的動(dòng)態(tài)內(nèi)存是在類型對(duì)象中分配的,
而類對(duì)象是在類型加載到一個(gè)AppDomain中創(chuàng)建的。
通常是在引用該類型的任何方法首次進(jìn)行JIT編譯的時(shí)候。
實(shí)例字段:用于容納字段數(shù)據(jù)的動(dòng)態(tài)內(nèi)存是在構(gòu)造類型的實(shí)例時(shí)分配的。
由于字段存儲(chǔ)在動(dòng)態(tài)內(nèi)存中,所以它們的值在運(yùn)行時(shí)才獲取,字段解決了常量存在版本控制的問(wèn)題。
CLR支持readonly 字段 和 read/write字段
read、write字段可以在代碼中多次改變。
readonly字段只能在構(gòu)造器方法中寫入,也就是在對(duì)象首次創(chuàng)建的時(shí)候。
編譯器和驗(yàn)證機(jī)制會(huì)確保readonly字段不會(huì)在構(gòu)造器以外的地方寫入。
在c#中允許內(nèi)聯(lián)初始化語(yǔ)法來(lái)初始化類的字段。c#實(shí)際是在構(gòu)造器中對(duì)字段進(jìn)行初始化的,內(nèi)聯(lián)代碼只是語(yǔ)法糖。
常量被看成類的一部分,是看出靜態(tài)成員。
代碼引用一個(gè)常量符號(hào),會(huì)在定義常量的元數(shù)據(jù)中查找該符號(hào),提取之,并嵌入代碼,生成的IL中是值本身。
在c#中使用的是const關(guān)鍵字。
字段:已一種數(shù)據(jù)成員,可以容納任何的數(shù)據(jù)類型,不僅僅想常量一樣只能存儲(chǔ)基元類型。
CLR支持類型字段和實(shí)例字段
類型字段:用于容納字段數(shù)據(jù)的動(dòng)態(tài)內(nèi)存是在類型對(duì)象中分配的,
而類對(duì)象是在類型加載到一個(gè)AppDomain中創(chuàng)建的。
通常是在引用該類型的任何方法首次進(jìn)行JIT編譯的時(shí)候。
實(shí)例字段:用于容納字段數(shù)據(jù)的動(dòng)態(tài)內(nèi)存是在構(gòu)造類型的實(shí)例時(shí)分配的。
由于字段存儲(chǔ)在動(dòng)態(tài)內(nèi)存中,所以它們的值在運(yùn)行時(shí)才獲取,字段解決了常量存在版本控制的問(wèn)題。
CLR支持readonly 字段 和 read/write字段
read、write字段可以在代碼中多次改變。
readonly字段只能在構(gòu)造器方法中寫入,也就是在對(duì)象首次創(chuàng)建的時(shí)候。
編譯器和驗(yàn)證機(jī)制會(huì)確保readonly字段不會(huì)在構(gòu)造器以外的地方寫入。
在c#中允許內(nèi)聯(lián)初始化語(yǔ)法來(lái)初始化類的字段。c#實(shí)際是在構(gòu)造器中對(duì)字段進(jìn)行初始化的,內(nèi)聯(lián)代碼只是語(yǔ)法糖。
相關(guān)文章
C#使用whisper.net實(shí)現(xiàn)語(yǔ)音識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了C#如何使用whisper.net實(shí)現(xiàn)語(yǔ)音識(shí)別功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下2023-11-11C#反射實(shí)現(xiàn)插件式開發(fā)的過(guò)程詳解
插件式架構(gòu),一種全新的、開放性的、高擴(kuò)展性的架構(gòu)體系,插件式架構(gòu)設(shè)計(jì)好處很多,把擴(kuò)展功能從框架中剝離出來(lái),降低了框架的復(fù)雜度,讓框架更容易實(shí)現(xiàn),這篇文章主要介紹了C#反射實(shí)現(xiàn)插件式開發(fā),需要的朋友可以參考下2023-09-09unity實(shí)現(xiàn)物體延時(shí)出現(xiàn)
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)物體延時(shí)出現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04Winform窗體縮放下使用剪切板功能出現(xiàn)頁(yè)面閃動(dòng)解決分析
這篇文章主要介紹了Winform窗體縮放下使用剪切板功能出現(xiàn)頁(yè)面閃動(dòng)解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11