『C#』 對象成員初始化順序

本文轉載并修改自 : CSDN 小K的大師兄

成員初始化整體順序

  • 成員賦值初始化先于構造函數(shù);
  • 成員賦值初始化先從派生類再到基類;
  • 構造函數(shù)初始化先從基類再到派生類;
  • 靜態(tài)成員初始化優(yōu)先于實例成員初始化;

對類型靜態(tài)成員構造的大致過程

  1. 分配靜態(tài)成員的內存空間,此時空間存儲數(shù)據(jù)為 default(Type);
  2. 執(zhí)行類的靜態(tài)成員的初始化語句;
  3. 執(zhí)行類的靜態(tài)構造函數(shù)。

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

  1. 分配實例成員的內存空間,此時空間存儲數(shù)據(jù)為 default(Type);
  2. 執(zhí)行派生類實例成員初始化語句;
  3. 執(zhí)行基類實例化成員初始化語句
  4. 執(zhí)行基類構造函數(shù);
  5. 執(zhí)行派生類構造函數(shù);

同時有靜態(tài)成員和實例成員的大致構造過程

  1. 執(zhí)行派生類靜態(tài)成員初始化語句;
  2. 執(zhí)行派生類靜態(tài)構造函數(shù);
  3. 執(zhí)行派生類實例成員初始化語句;
  4. 執(zhí)行基類靜態(tài)成員初始化語句
  5. 執(zhí)行基類靜態(tài)構造函數(shù);
  6. 執(zhí)行基類實例成員初始化語句
  7. 執(zhí)行基類實例構造函數(shù);
  8. 執(zhí)行派生類實例構造函數(shù)。

  • C#中靜態(tài)構造函數(shù)都是私有的,不能為其添加訪問修飾符;
  • 只有創(chuàng)建類的實例調用任何靜態(tài)成員時才能激發(fā)靜態(tài)構造函數(shù);
  • 調用一個未初始化類靜態(tài)成員時,他會先去初始化這個類的靜態(tài)成員靜態(tài)構造函數(shù)。

---END---

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 3,186評論 2 9
  • C++文件 例:從文件income. in中讀入收入直到文件結束,并將收入和稅金輸出到文件tax. out。 檢查...
    SeanC52111閱讀 3,120評論 0 3
  • 官方文檔 初始化 Initialization是為準備使用類,結構體或者枚舉實例的一個過程。這個過程涉及了在實例里...
    hrscy閱讀 1,208評論 0 1
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,698評論 1 51
  • 李笑來老師在《通往財富自由之路》的專欄中提到一個觀點:投資的剛需是避險。我個人非常非常認同這個觀點,并且在幣圈投資...
    歐陽海123閱讀 332評論 0 0

友情鏈接更多精彩內容