一、成員初始化整體順序
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.調用一個未初始化類的靜態成員時,他會先去初始化這個類的靜態成員和靜態構造函數。