为什么它是 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 异常结束
好吧,让我们看看:
- 程序运行
main
执行 new Foo();
;
new Foo()
创建新的 Foo
实例,包括 Foo foo
字段
Foo foo = new Foo();
执行new Foo
(转到步骤 2)
为什么以下代码会抛出 WhosebugException
?
class Foo
{
Foo foo = new Foo();
}
class Program
{
static void Main(string[] args)
{
new Foo();
}
}
在 Main 中创建一个新的 Foo 对象,调用它的构造函数。 在 Foo 构造函数中,您创建一个不同的 Foo 实例,再次调用 Foo 构造函数。
这会导致无限递归并以 Whosebug 异常结束
好吧,让我们看看:
- 程序运行
main
执行new Foo();
; new Foo()
创建新的Foo
实例,包括Foo foo
字段Foo foo = new Foo();
执行new Foo
(转到步骤 2)