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

C# 到 IL 深度解析:第4章 關鍵字與操作符 (上)(14) - 介面實現與 override 的 IL 機制

     編輯:關於C語言

介面方法實現與 .override 指令

類別 yyy 實作介面 iii,並以 .override iii::pqr with instance void yyy::abc() 將介面方法 pqr 映射至實例方法 abc。

關鍵 IL 片段

.class interface iii {
    .method public virtual abstract void pqr() il managed { }
}
.class public yyy implements iii {
    .override iii::pqr with instance void yyy::abc()
    .method public virtual hidebysig newslot instance void abc() il managed {
        ldstr "yyy abc"
        call void System.Console::WriteLine(string)
        ret
    }
}

入口點呼叫 callvirt instance void iii::pqr(),運行時依物件實際類型分派至 yyy.abc。

base 關鍵字在 IL 中的處理

base.abc() 編譯為 call instance void yyy::abc()(非虛呼叫),直接指定基類方法,不經虛擬分派。base 屬編譯期概念,IL 無對應指令。

newslot 與 virtual

  • newslot:在介面或基類中標記新虛擬槽位,防止名稱衝突。
  • 覆寫方法預設為 virtual,new 則隱藏基類實現。

輸出:yyy abc。

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