C# 执行顺序易错题1

来源:互联网 发布:杭州认知网络投资人 编辑:程序博客网 时间:2024/06/01 09:55
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。

0 0