这段程序编译器(vs2005)编译可以通过,执行时会引发StackOverflowException。
MSDN:
在以前版本的 .NET Framework 中,您的应用程序可以捕获 StackOverflowException 对象(例如,从无限递归恢复)。但是,现在我们建议不要使用这种做法,原因是需要大量附加代码才能可靠地捕获堆栈溢出异常并继续执行程序。
从 .NET Framework 2.0 版开始,将无法通过 try-catch 块捕获 StackOverflowException 对象,并且默认情况下将终止相应的进程。
using
System;
class A
... {
public int a = 0;
public B cb = new B();
}
class B
... {
public int b = 1;
public A ca = new A();
}
class MainConsole
... {
public static void Main()
...{
A a = new A();
B b = new B();
Console.WriteLine("{0}",a.a);
Console.WriteLine("{0}",b.b);
}
}
class A
... {
public int a = 0;
public B cb = new B();
}
class B
... {
public int b = 1;
public A ca = new A();
}
class MainConsole
... {
public static void Main()
...{
A a = new A();
B b = new B();
Console.WriteLine("{0}",a.a);
Console.WriteLine("{0}",b.b);
}
}