class A
{
public static int X;
static A()
{
X = B.Y + 1;
}
}
class B
{
public static int Y = A.X + 1;
static B() {
}
static void Main()
{
Console.WriteLine("X={0},Y={1}", A.X, B.Y);
}
}
执行过程:
- 因为classB中有main函数,所以先初始化class B,
- Y=A.x+1;引用了A.x,编译器去初始化Class A
- class A 的成员变量x,——>构造函数A(),此时B未初始化完成,所以B.y为0,所以A.x=1;
- 返回ClassB,继续初始化成员变量Y,值为2.
执行结果