const和static readonly的區別

2021-04-13 22:07:13 字數 1270 閱讀 3269

const

1. 在編譯期間解析的常量 2.

必須在宣告就初始化 3.

既可用來修飾類中的成員,也可修飾函式體內的區域性變數。

static readonly

1. 在執行期間解析的常量, 2.

既可以在宣告時初始化也可以在構造器中初始化。

3. 只可以用於修飾類中的成員

例子: 1.

static readonly

myclass myclass =

newmyclass(); //

必須使用

static readonly,

因為new

需要在執行時確定 //

而const

只能必須在編譯時就確定

2. static readonly

a = b * 20;

static readonly

b = 10; //

可以使用

static readonly,

顯然可以在執行時確定語句 //

也可以使用

const //

const a = b * 20;

//const b = 10; //

,編譯器會在編譯時候,就把

b編譯為10,

a編譯為

200,而不是在執行時再計算

b * 20 2.

有乙個專案,有乙個

myint

的屬性,定義如下:

public

class

myclass

另乙個專案中引用該屬性

public

class

anotherclass

編譯執行程式,i

= 5.

這是當然的。

但是如果我們改變

myclass

中的myint

的值,改為

6.然後編譯

myclass

所在的專案,生成

dll。

再執行程式

anotherclass

,發現i

還是= 5

,而不是

6!,為什麼?因為在

anotherclass中,i

已經被定義為

5而不是執行時再去取

dll的值,所以說

const

是編譯時就確定了!!!

const物件和const函式

當乙個類的函式的參數列不同時,能過載函式,當函式的const性不同時,也能過載函式。如下所示 include a.h 定義了ca類 class cbigclass const ca getvalue const ca getvalue private ca m value 客戶端 如下 ca ca ...

頂層const和底層const

頂層const 本身是乙個常量 底層const 所指的物件是乙個常量 int const p1 i const修飾p1,p1本身是乙個const,所以這個const是頂層const const int ci 42 const修飾ci,ci本身是乙個const,頂層 const int p2 ci c...

頂層const和底層const

1.頂層 const 與底層 const概念 指標本身是乙個物件,因為,指標實際對應著記憶體單元的一段儲存空間,然而,指標所指向的也是乙個資料物件,因此,指標是乙個常量與指標所指向的是乙個常量是兩個完全不同的概念,頂層 const表示的是指標本身是乙個常量,底層const 表示的是指標所指的物件是乙...