型別初始化

2022-02-19 14:25:46 字數 648 閱讀 9175

最近兩天在看《

.net

本質論》其中提到了一型別初始化中比較關鍵的兩個方法:型別初始化器(

cctor

)和建構函式(

ctor

)。建構函式不用多說,上學時就知道,但是型別初始化器我是剛剛知道,它是乙個無返回值、無引數、靜態的函式,在型別首次被載入時呼叫,接下來來看個例子:

class

class1

//////

ctor

///public class1()}再用

呼叫做乙個實驗:

class

program

}結果是:12

2由此可見只有在型別首次被載入時才執行型別初入化器,再來看看元資料。原來

在看型別的元資料時並沒有太注意:

在我們編寫型別時,即使不寫

cctor

,系統也會給我們預設乙個。

對於上面的程式還有另一種寫法:

class

class1

//////

ctor

///public class1()}i

這個成員變數在宣告時初始化,但是結果是一樣的,這說明了,在型別第一次被載入時首先執行的時這些靜態成員變數的附值,然後時型別初始化器中的內容,在被例項化時才呼叫建構函式。

static 型別初始化

在初始化時,先初始化static型別變數,再初始化普通變數,再初始化建構函式。如下程式 class a void f int i class b void f2 int i static a a2 new a 2 class c void f3 int i static a a5 new a 5 p...

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...