为什么它是 StackOverFlow 异常?

Why it is a StackOverFlow Exception?

为什么以下代码会抛出 WhosebugException

class Foo
{
    Foo foo = new Foo();
}
class Program
{
    static void Main(string[] args)
    {
        new Foo();
    }
}

在 Main 中创建一个新的 Foo 对象,调用它的构造函数。 在 Foo 构造函数中,您创建一个不同的 Foo 实例,再次调用 Foo 构造函数。

这会导致无限递归并以 Whosebug 异常结束

好吧,让我们看看:

  1. 程序运行 main 执行 new Foo();;
  2. new Foo() 创建新的 Foo 实例,包括 Foo foo 字段
  3. Foo foo = new Foo();执行new Foo(转到步骤 2)