首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C#虛函數解析機制深度解析(三):繼承鏈圖解、重構驗證、this/base關鍵字與委托調用

     編輯:關於C語言

方法繼承鏈圖解

虛函數繼承鏈圖

圖例說明:

  • 圓形末端:封閉/中斷繼承鏈(new關鍵字)
  • 菱形末端:開放/允許構建繼承鏈(virtual/override)
  • 等式:左側調用站點,右側實際執行代碼定義位置

Visual Studio重構驗證技巧

在VS中使用重構→重命名(F2)**修改方法名,觀察重命名範圍:

  • 繼承鏈連續段會被同步重命名。
  • 鏈中斷處(new/sealed)重命名自動停止。
  • 直觀驗證方法繼承鏈構建正確性,無需運行代碼。

this關鍵字解析規則

this按當前代碼上下文解析為對應類型引用,再按虛函數解析規則:


class C : B
{
    public override void Foo1() 
    {
        this.Foo2(); // 在 D 實例上調用時,解析到 D.Foo2()
    }
}

class D : C
{
    public override sealed void Foo2() { }
}

外部調用D.Foo1() → 執行C.Foo1() → 內部this.Foo2()解析到D.Foo2()(多態)。

base關鍵字:直接調用基類實現

  • 無虛函數解析過程,直接調用基類定義的方法體**。
  • 常用於override方法中擴展基類邏輯:base.Foo(); // 先執行基類邏輯

委托包裝的方法指針調用

委托調用時,目標方法仍按上述虛函數解析規則執行,保證多態行為一致性。

關於Foo命名慣例

Foo/Bar/Baz源自計算機科學經典元語法變量命名傳統(MIT/DEC hacker文化),表示「無具體業務含義的佔位符名稱」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved