clr還支援型別構造器,也稱為靜態構造器。c#型別構造器可應用引用型別和值型別,永遠沒有引數。主要作用是:設定型別中靜態欄位的初始化。型別構造器不一定要在類中定義,但是最多也只能有乙個。例:
class sometype等價於}class sometype
class sometype
}還有:
class sometype
}等價於
class sometype
}雖然c#不允許值型別為它的例項化欄位使用內聯初始化語法,但是靜態字段可以的,以上把class改成struct一樣可以執行,
主要原因是:值型別可以定義無參型別構造器,但是不可以定義無參型別例項構造器。
型別構造器
記得我在分析 readonly 關鍵字那篇文字裡,我用到了型別構造器。後來想了想,我能不能不用型別構造器呢?左想右想,還是不行,非得用它不可,因為欄位是 readonly 修飾,且他娘的還是 static 的,地球人都知道,我絕不能拿物件構造器去初始化乙個 static 修飾的字段。我查了查 clr...
例項構造器與型別構造器
例項構造器即例項建構函式,型別構造器也就是靜態建構函式.1 在例項構造器裡面,我們可以初始化類的例項欄位和靜態欄位.class test 2 在型別構造器裡面我們只能初始化靜態字段,其目的也在於此.class test 3 例項構造器和型別構造器觸發的條件不一樣.例項構造器是在乙個類的例項構造的時候...
引用型別構造器
引用型別構造器 是將型別的例項初始化為良好狀態的一種特殊方法。建立乙個引用型別的例項時,首先為例項的資料字段分配記憶體,然後初始化物件的附加字段 物件指標 同步塊索引 最後呼叫型別中定義的例項構造器來設定物件的初始化狀態。構造引用型別的物件時,在呼叫型別的例項構造器之前,為物件分配所有欄位的記憶體總...