C 中Const常量和ReadOnly的區別總結

2021-10-04 23:51:46 字數 900 閱讀 2842

複習基礎知識的時候,看到了readonly這裡,被書裡說的感覺忘了和const有什麼區別了,索性今天就總結一下,以便於後續的學習。

一、常量const:

1.宣告時必須初始化值;

2.宣告後值不能改變;

3.編譯時決定;

4.通常是簡單型別或由簡單型別組成的表示式做初始化語句,也可以是null引用,但是不能是某個物件的引用,因

為物件引用是在執行時決定的;

5.更像「靜態值」,因為他對類的每個例項都是可見的,即使不例項也可見,非常類似靜態變數;

6.記憶體不會為const變數分配空間,常量const沒有自己的儲存位置,而是在編譯時被編譯器替換。

二、readonly修飾符:

1.值被宣告後就不能改變;

2.不僅可以初始化賦值的形式賦值,還可以在建構函式中賦值,如果是靜態的字段,就必須在靜態建構函式中完成;

3.他在記憶體中有儲存位置;

4.可以是例項字段,也可以是靜態字段;

三、常量const與readonly修飾符的異同:

1.const和readonly都是一旦值被設定後就不可以更改了,區別是const必須在宣告時就要賦值,而readonly不僅可以在宣告時賦值,還可以在建構函式中宣告,也就是更靈活了,根據需要在不同建構函式中宣告,只是一旦宣告就不能改變。

2.const是沒有記憶體位置的,他在編譯時由編譯器替換,而readonly是有記憶體位置的。

3.const表現得更像乙個靜態值(只是記憶體中沒有位置),而readonly既可以是靜態欄位也可以是例項字段。

4.因為const是在編譯時決定的,而readonly是在執行時決定的。正因為這個特性,所以const必須在宣告時就要賦初始值並且還不能是非null引用;也正是因為這個特性,readonly的初始值賦值更為靈活,可以宣告時直接定義也可以在在構造方法中定義。

c和c 中的const與常量摺疊

c中const修飾的是唯讀變數,c 中const修飾的是常量 在c c 中const在使用並無太大區別,只是c 對const更為嚴格,並且對const修飾的量進行了常量摺疊。先看如下例子,例子中不只測試c c 中const 的區別,也順便測試了const int 指標與int const指標的區別 ...

關於C 中的常量const

一 為什麼會有const,它有什麼用?加了const的變數只可讀不可寫。如 指標常常是邊讀邊移動,而不是邊寫邊移動,許多函式引數是唯讀不寫的。一 const的不同位置有什麼區別?char constcp 到char的const指標 charconst pc1 到const char的指標 const...

php中const定義常量

const 常量 1.在定義時必須被初始值,2.前面不加任何修飾符 3.變數名字母一般都大寫 4.常量可以被子類繼承 5.乙個常量是屬於乙個類的,而不是某個物件的 作用 當某些值是固定不變的,就用const 1.const 定義的常量和define 定義的常量的區別?希望乙個成員變數不被修改 例如圓...