为什么是StackOverFlow异常?

问题描述 投票:1回答:2

为什么下面的代码抛出StackoverflowException

class Foo
{
    Foo foo = new Foo();
}
class Program
{
    static void Main(string[] args)
    {
        new Foo();
    }
}
c# stack-overflow
2个回答
8
投票

在Main中,您将创建一个新的Foo对象,并调用其构造函数。在Foo构造函数中,您创建另一个Foo实例,再次调用Foo构造函数。

这将导致无限递归并以StackOverflow异常结束


5
投票

好吧,让我们看看:

  1. 程序运行main,执行new Foo();
  2. [new Foo()创建新的Foo实例,包括Foo foo字段
  3. [Foo foo = new Foo();执行new Foo(转到步骤2)] >>
© www.soinside.com 2019 - 2024. All rights reserved.