常量和字段
常量:是一個特殊的符號,有一個從不變化的值。
?
它的值是在編譯時確定的。編譯器將常量保存到程序集的元數據中,所有只能是編譯器認識的基元類型作為常量。
常量被看成類的一部分,是看出靜態(tài)成員。
代碼引用一個常量符號,會在定義常量的元數據中查找該符號,提取之,并嵌入代碼,生成的IL中是值本身。
在c#中使用的是const關鍵字。
?
字段:已一種數據成員,可以容納任何的數據類型,不僅僅想常量一樣只能存儲基元類型。
?
CLR支持類型字段和實例字段
類型字段:用于容納字段數據的動態(tài)內存是在類型對象中分配的,
而類對象是在類型加載到一個AppDomain中創(chuàng)建的。
通常是在引用該類型的任何方法首次進行JIT編譯的時候。
實例字段:用于容納字段數據的動態(tài)內存是在構造類型的實例時分配的。
由于字段存儲在動態(tài)內存中,所以它們的值在運行時才獲取,字段解決了常量存在版本控制的問題。
?
CLR支持readonly 字段 和 read/write字段
read、write字段可以在代碼中多次改變。
readonly字段只能在構造器方法中寫入,也就是在對象首次創(chuàng)建的時候。
編譯器和驗證機制會確保readonly字段不會在構造器以外的地方寫入。
在c#中允許內聯初始化語法來初始化類的字段。c#實際是在構造器中對字段進行初始化的,內聯代碼只是語法糖。
?
?
轉載于:https://www.cnblogs.com/lmfeng/archive/2012/10/16/2725892.html
總結
- 上一篇: ECsoop 商品列表页属性筛选区品牌以
- 下一篇: TSP_遗传算法求解