为什么它是StackOverFlow异常?

时间:2015-10-30 12:54:09

标签: c#

为什么以下代码是stackoverflow异常?

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

好吧,让我们看看:

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