为什么以下代码是stackoverflow异常?
class Foo
{
Foo foo = new Foo();
}
class Program
{
static void Main(string[] args)
{
new Foo();
}
}
答案 0 :(得分:7)
在Main中,您将创建一个新的Foo对象,并调用其构造函数。 在Foo构造函数中,您创建了一个不同的Foo实例,再次调用Foo构造函数。
这导致无限递归并以StackOverflow异常结束
答案 1 :(得分:4)
好吧,让我们看看:
main
,执行new Foo();
; new Foo()
创建新的Foo
个实例,包括Foo foo
字段Foo foo = new Foo();
执行new Foo
(转到第2步)