Const 與 Readonly 使用總結

2022-02-03 18:34:07 字數 1319 閱讀 9580

在以往的開發過程中一直使用const來定義常量,很少注意到readonly的使用,因為總感覺const的使用已經足夠了。而就在這兩天,在閱讀sqlhelper的**時,再次看到了readonly的使用,而且感覺很彆扭。如果按const來說,定義了常量後,常量在使用時是不允許再次改變的。而readonly不然,在建構函式中進行了再次賦值。由於對readonly使用的迷惑,本著學習的態度,總結了const 與 readonly 使用,供以後參考:

名稱

靜態常量(const)

動態常量/唯讀變數(readonly)

使用範圍

全域性和區域性

全域性初始值

定義時必須賦初始值

定義時可不賦值

賦值方式

定義時賦值

定義時賦值、建構函式中賦值

訪問方式

型別訪問

例項物件訪問

static

不能和static同時使用

可以和static 同時使用,使用後,如果想在建構函式中賦初始值,必須使用靜態無參建構函式。

應用型別

只能應用值型別和string型別

任意型別

例項(vs2008)

1

using 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可能有不...