1. 程式人生 > >[From 7.1~7.2] 常量和欄位

[From 7.1~7.2] 常量和欄位

/----------------------------7.1常量------------------------------------------/ 常量是值從不變化的符號。定義常量符號時,它的值必須能在 編譯時確定。確定後, 編譯器將常量值儲存到程式元資料中。這意味著 只能定義編譯器識別的基元型別的常量。在C#中,以下基元型別,可用於定義常量: Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,UInt64,Single,Double,Decimal和String。然而, C#也允許非基元型別的常量變數,前提是把值設為null。   常量總是被是為靜態成員(C#不允許常量指定static關鍵字,因為常量總是隱式為static) 注:若要改變常量程式集則必須重新編譯。   /----------------------------7.2 欄位-----------------------------------------/ 型別欄位(靜態欄位)和例項欄位(非靜態欄位)的記憶體分配時機   型別欄位(靜態欄位):如果是型別欄位,容納欄位資料所需的 動態記憶體是型別物件中分配
的,而 型別物件是再型別載入到一個AppDomain時建立的。那麼, 什麼時候將型別載入到一個AppDomain中呢?這通常時再引用了 該型別的任何方法首次進行JIT編譯的時候。 例項欄位(非靜態欄位):容納欄位資料所需的動態記憶體是在 構建型別的例項時分配的。     readonly:這種欄位只能由一個構造器方法中的程式碼寫入。不會被構造器以外的任何方法寫入。 注意,可利用反射來修改readonly欄位。   C#允許使用內聯初始化語法來初始化類的欄位。但是 C#實際是在構造器中對欄位進行初始化的,欄位的內聯初始化只是一種語法上的簡化。
例: Class A {     public int value = 5; }