1. 程式人生 > >readonly const關鍵字

readonly const關鍵字

key library data- static 階段 word fin ipp fda

readonly 關鍵字與 const 關鍵字不同。 const 字段只能在該字段的聲明中初始化。 readonly 字段可以在聲明或構造函數中初始化。 因此,根據所使用的構造函數,readonly 字段可能具有不同的值。 另外,const 字段為編譯時常數,而 readonly 字段可用於運行時常數,如下例所示:

public static readonly uint timeStamp = (uint)DateTime.Now.Ticks; // 運行時的時間賦值給static readonly字段。 1. 用readonly的地方大部分要用static,即static readonly。 不加static的readonly字段是實例字段,非常不好理解。 2. readonly字段可以在聲明時初始化,也可以在構造函數裏初始化。相應的static readonly在聲明時或者靜態構造函數裏初始化。 3. 對應上一條,
const 字段只能在該字段的聲明中初始化。
4. const 字段為編譯時常數,而 readonly 字段可用於運行時常數。 const類似於C++裏的define/宏定義,編譯階段進行字面上的替換。而readonly字段是維持一個對字段的引用,所以更加保險。比如一個應用程序用的是另一個assembly裏的const,如果這個assembly裏的const變了,應用程序裏的const並不能及時更新,因為編譯時已經進行了字面替換,除非重新編譯獲取最新的值。 5. 靜態常量只能被聲明為簡單的數據類型(int以及浮點型)、枚舉、布爾或者字符串型,而動態常量則除了這些類型,還可以修飾一些對象類型。

readonly const關鍵字