基本调用是否在 C# 中动态绑定?

Are base calls dynamically bound in c#?

出于好奇:在 C# 中使用 base 关键字的调用是否动态绑定(即它是多态调用)?

考虑以下示例:

public class A
{
    public virtual void WriteSomething() 
    { 
        Console.WriteLine("Hello from A"); 
    }
}

public class B : A
{
    public override void WriteSomething() 
    { 
        base.WriteSomething();
        Console.WriteLine("Hello from B");
    }
}

public class Program
{
    public static void Main()
    {
        A instance = new B();
        instance.WriteSomething();
    }
}

我知道当客户端(在本例中为 Main 方法)调用 instance.WriteSomething 时,此调用是动态绑定的。但是在classB中覆盖方法中的base.WriteSomething调用呢?我假设它不是动态绑定的,因为编译器在编译时知道基数 class,因此不需要动态绑定 - 但我找不到任何相关文档。

提前感谢您的帮助!

好吧,我刚刚看了一下中间语言,可以看到 base 调用不是动态绑定的(蓝色矩形):