日期:2014-05-19  浏览次数:20723 次

关于静态成员与静态方法的问题
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
为什么?

------解决方案--------------------
你单步调试看看程序的执行顺序就明白了

简单地说,因为我们先用到类B,所以执行了public static int Y = A.X + 1;,着时候才用到类A,所以执行 X = B.Y + 1;这时候的B.Y是编译器赋予的初值0,所以X=1;,所以Y=2