出于好奇:在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
时,此调用是动态绑定的。但是类base.WriteSomething
中重写方法中的B
调用怎么办?我假设它不是动态绑定的,因为编译器在编译时知道基类,因此不需要动态绑定 - 但我找不到任何文档。
提前感谢您的帮助!