在以往的開發過程中一直使用const來定義常量,很少注意到readonly的使用,因為總感覺const的使用已經足夠了。而就在這兩天,在閱讀sqlhelper的**時,再次看到了readonly的使用,而且感覺很彆扭。如果按const來說,定義了常量後,常量在使用時是不允許再次改變的。而readonly不然,在建構函式中進行了再次賦值。由於對readonly使用的迷惑,本著學習的態度,總結了const 與 readonly 使用,供以後參考:
名稱
靜態常量(const)
動態常量/唯讀變數(readonly)
使用範圍
全域性和區域性
全域性初始值
定義時必須賦初始值
定義時可不賦值
賦值方式
定義時賦值
定義時賦值、建構函式中賦值
訪問方式
型別訪問
例項物件訪問
static
不能和static同時使用
可以和static 同時使用,使用後,如果想在建構函式中賦初始值,必須使用靜態無參建構函式。
應用型別
只能應用值型別和string型別
任意型別
例項(vs2008)
1using system;
2using system.collections.generic;
3using system.linq;
4using system.text;56
namespace constandreadonly
7 ;17 readonlytest rt2 = new readonlytest(str1); //
通過建構函式賦予陣列
18 console.writeline(rt2.str1.count());
19 console.readline();
20 }
21 }
22class consttest
23
26class readonlytest
27
36public readonlytest(string s)
37
40 }
41 }
const與readonly的區別
readonly 關鍵字與 const 關鍵字不同。1.const 字段只能在該字段的宣告中初始化。readonly 字段可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 字段可能具有不同的值。2.const 欄位是編譯時常數,而 readonly 欄位可用於執行時常數。3...
const與readonly的區別
a.const 關鍵字用於修改欄位或區域性變數的宣告。它指定欄位或區域性變數的值不能被修改。常數宣告引入給定型別的乙個或多個常數。const 資料成員的宣告式必須包含初值,且初值必須是乙個常量表示式。因為它是在編譯時就需要完全評估。const 成員可以使用另乙個 const 成員來初始化,前提是兩者...
const與readonly的區別
const與readonly總結如下 1.const和readonly在指定初始值以後將可讀不可寫 2.const是編譯時常量,readonly是執行時常量.因此const只能在該字段的宣告中初始化,而readonly欄位可以在宣告或建構函式中初始化,因此根據建構函式的不同,readonly可能有不...