为什么下面的代码抛出StackoverflowException
?
class Foo
{
Foo foo = new Foo();
}
class Program
{
static void Main(string[] args)
{
new Foo();
}
}
在Main中,您将创建一个新的Foo对象,并调用其构造函数。在Foo构造函数中,您创建另一个Foo实例,再次调用Foo构造函数。
这将导致无限递归并以StackOverflow异常结束
好吧,让我们看看:
main
,执行new Foo();
;new Foo()
创建新的Foo
实例,包括Foo foo
字段Foo foo = new Foo();
执行new Foo
(转到步骤2)] >>