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 );
}
}
产生的输出结果是什么?
答:x=1,y=2
分析:
X,Y都是A和B类的静态Int类型成员。初始时没有赋值,默认是0。 由于Main方法放在Class B里,所以会以Class B为程序入口。先初始化B的属性。即执行public static int Y = A.X + 1; 这一句。 而A.X将执行A的构造函数,程序跳至X = B.Y + 1; 这一句。由于此时Y还没有被赋值,依然是0,所以X = 0+1=1; X被赋值后,程序返回public static int Y = A.X + 1; 继续执行,则Y=1+1=2。 所以最后的结果是A.X=1,B.Y=2。