本文轉載并修改自 : CSDN 小K的大師兄
成員初始化整體順序
- 成員賦值初始化先于構造函數(shù);
- 成員賦值初始化先從派生類再到基類;
- 構造函數(shù)初始化先從基類再到派生類;
- 靜態(tài)成員初始化優(yōu)先于實例成員初始化;
對類型靜態(tài)成員構造的大致過程
-
分配靜態(tài)成員的內存空間,此時空間存儲數(shù)據(jù)為
default(Type); - 執(zhí)行類的靜態(tài)成員的初始化語句;
- 執(zhí)行類的靜態(tài)構造函數(shù)。
對類型實例成員構造的大致過程
-
分配實例成員的內存空間,此時空間存儲數(shù)據(jù)為
default(Type); - 執(zhí)行派生類實例成員初始化語句;
- 執(zhí)行基類實例化成員初始化語句;
- 執(zhí)行基類構造函數(shù);
- 執(zhí)行派生類構造函數(shù);
同時有靜態(tài)成員和實例成員的大致構造過程
- 執(zhí)行派生類靜態(tài)成員初始化語句;
- 執(zhí)行派生類靜態(tài)構造函數(shù);
- 執(zhí)行派生類實例成員初始化語句;
- 執(zhí)行基類靜態(tài)成員初始化語句;
- 執(zhí)行基類靜態(tài)構造函數(shù);
- 執(zhí)行基類實例成員初始化語句;
- 執(zhí)行基類實例構造函數(shù);
- 執(zhí)行派生類實例構造函數(shù)。
- C#中靜態(tài)構造函數(shù)都是私有的,不能為其添加訪問修飾符;
- 只有創(chuàng)建類的實例或調用任何靜態(tài)成員時才能激發(fā)靜態(tài)構造函數(shù);
- 調用一個未初始化類的靜態(tài)成員時,他會先去初始化這個類的靜態(tài)成員和靜態(tài)構造函數(shù)。
---END---