class Program
{
static void Main(string[] args)
{
B foo = new B();
foo.DoWork();
Console.ReadLine();
}
}
public class A
{
public virtual void DoWork() { Console.WriteLine("A"); }
}
public class B : A
{
public override void DoWork() { base.DoWork(); Console.WriteLine("B"); }
}
为什么我没有得到 StackOverflow 异常?据我了解,调用 foo.DoWork(),然后调用 base.DoWork(),它是虚拟的并在类 B.DoWork() 方法中被覆盖,它将再次重复调用 base.DoWork(),直到堆栈溢出. 当使用 this 而不是 base(调用 self 的循环循环)时,很容易实现这种溢出。在这种情况下,是什么阻止了虚函数覆盖?