class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y ;
static B()
{
Y = A.X + 1;
}
static void Main()
{
Console.WriteLine("x={0},y={1}",A.X,B.Y);
Console.ReadKey();
}
} |
A.X、B.Y都是int 类型的属性,默认值为0;
程序执行到A.X的时候,因为没有A对象,所以先调用构造函数A(){X=B.Y+1;} ,这里遇到B.Y
程序运行遇到B.Y,因为没有B对象,所以调用构造函数B(){Y=A.X+1;} 因为A已经存在,所以调用A.X=0;则Y=0+1 ; -> 得到B.Y=1;
将B.Y=1;返回A(){X=B.Y+1;},得出结果A.X=2; A.X运行结束,
程序运行到B.Y,因为B对象已经存在,所以直接调用B.Y=1;
打印出最后结果:x=2,y=1 |