首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# 建構函數執行順序解析:基類構造函數 → 衍生類構造函數 → 成員初始化

     編輯:程式設計疑難解答

輸出順序預測

代碼建立 C 類實例,C 繼承 A 並包含 B 成員。輸出順序:**B → A → C**。

詳細執行流程

  1. new C() 調用 C 的構造函數。
  2. **隱式調用基類 A 的無參構造函數** (若無顯式 base())。
  3. A 構造函數執行 → 輸出 'A'。
  4. 返回 C 構造函數,**初始化成員變數 B b** → 調用 B 無參構造函數 → 輸出 'B'。(注:C# 成員初始化在基類構造函數**之後**、衍生類構造函數體**之前**)
  5. C 構造函數體執行 → 輸出 'C'。

關鍵規則總結

階段動作輸出
1基類構造函數A
2成員變數初始化 (B b)B
3衍生類構造函數體C

關於 string[] s1 = s.Split('.') 的疑問

此行代碼**與建構順序無關**,可能是開發者殘留的測試代碼或為後續邏輯準備。若未使用可刪除。

重載與建構函數的區別

  • 建構函數重載:同一類提供多種參數列表的構造函數,方便不同方式初始化。
  • 方法重載:同名方法不同參數列表。
  • 本題核心是**繼承鏈與成員初始化順序**,非重載問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved