C#中成員初始化順序

一、成員初始化整體順序

1.成員賦值初始化先於構造函數;

2.成員賦值初始先從子類再到基類;

3.構造函數初始化先從基類再到子類;

4.靜態成員初始化優先於實例成員初始化;

二、對靜態類型成員構造的大致過程

1.分配靜態成員的內存空間,此時空間存儲數據爲0;

2.執行類的靜態成員的初始化語句;

3.執行類的靜態構造函數。

三、對實例類型成員構造的大致過程

1.分配實例成員的內存空間,此時空間存儲數據爲0;

2.執行子類實例成員初始化語句;

3.執行基類實例化成員初始化語句;

4.執行基類構造函數;

5.執行子類構造函數;

四、同時有靜態成員和實例成員的大致構造過程

1.執行子類靜態成員初始化語句;

2.執行子類靜態構造函數;

3.執行子類實例成員初始化語句;

4.執行基類靜態成員初始化語句;

5.執行基類靜態構造函數;

6.執行基類實例成員初始化語句;

7.執行基類實例構造函數;

8.執行子類實例構造函數。

五、說明

1.C#中靜態構造函數都是私有的,不能爲其添加訪問修飾符;

2.只有創建類的實例或調用任何靜態成員時才能激發靜態構造函數;

3.調用一個未初始化類的靜態成員時,他會先去初始化這個類的靜態成員和靜態構造函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章