IL 使用 extends 建立繼承關係(源自 Java/IL,非 C# 專有)。編譯器根據靜態類型決定方法呼叫的前綴類別(如 yyy::abc 或 xxx::abc),此決策發生在編譯期,不反映在 IL 指令中。
// C# 代碼
class yyy { public void abc() { Console.WriteLine("yyy abc"); } }
class xxx : yyy { }
IL:入口點 newobj instance void xxx::.ctor() 建立 xxx 實例,但呼叫 call instance void yyy::abc(),因 xxx 未覆寫 abc,直接繼承基類實現。輸出 yyy abc。
編譯器負責解析方法解析規則(優先找派生類、再找基類),並發出對應的 call 或 callvirt。IL 本身不包含解析邏輯,僅執行指令。