c 中static和const有什麼區別

2021-08-21 04:36:30 字數 936 閱讀 6626

們都知道,const和static readonly的確很像:通過類名而不是物件名進行訪問,在程式中唯讀等等。在多數情況下可以混用。

二者本質的區別在於,const的值是在編譯期間確定的,因此只能在宣告時通過常量表示式指定其值。而static readonly是在執行時計算出其值的,所以還可以通過靜態建構函式來賦值。由於靜態類不支援例項化操作,因此在靜態類的定義中,不允許再新增sealed或abstract關鍵字,也不允許繼承某個類或被某個類繼承,而類的成員中,也只能是靜態成員,且不能定義構造器。由於不存在類的繼承關係,因此,靜態類成員中,也不允許有protected或protected internal作為訪問限制修飾符。

明白了這個本質區別,我們就不難看出下面的語句中static readonly和const能否互換了:

1. static readonly myclass myins = new myclass();

2. static readonly myclass myins = null;

3. static readonly a = b * 20;

static readonly b = 10;

4. static readonly int constintarray = new int ;

5. void somefunction()

1:不可以換成const。new操作符是需要執行建構函式的,所以無法在編譯期間確定

2:可以換成const。我們也看到,reference型別的常量(除了string)只能是null。

3:可以換成const。我們可以在編譯期間很明確的說,a等於200。

4:不可以換成const。道理和1是一樣的,雖然看起來1,2,3的陣列的確就是乙個常量。

5:不可以換成readonly,readonly只能用來修飾類的field,不能修飾區域性變數,也不能修飾property等其他類成員。

C 中 const 和 static 的總結

一 c 中的const是為了幹什麼 const 的特點和應用場景 c 中的const 可以定義常量,修飾常變數 類的成員方法 類的成員變數 1 const用來定義常量,那麼這個常量就不能作為左值被修改,而且必須初使化。const修飾的常量如果是乙個明確的值,那麼常量在編譯期間會被常量的初始值替換 2...

C 中 const 和 static 的作用

const 的主要應用如下 const 關鍵字使用的注意點 c 中static關鍵字有三個明顯的作用 const char getchar void char ch getchar error const char ch getchar correct int getcount void const...

深入辨析C 中的static和const

const和static在c 中經常被使用到。簡單地說 const定義乙個類例項化範圍內的常量,而static定義的是類的靜態成員變數是由乙個類的所有例項物件共享的。再仔細說明一下 另外,也存在例外的情況!在stl原始碼剖析中1.9.3中提到的 如果在class中含有const static int...