namespace ffp
{
class B
{
public static  int y=A.x+1;

static B()
{}

static void Main()
{ Console.WriteLine(B.y);
Console.WriteLine(A.x);
 
}
}
class A
{
public static int x;

static A()
{
x=B.y+1;
Console.WriteLine(B.y);    //B.y=0   ?????????????? 给指点一下不明白这一点
 
}

}
}

解决方案 »

  1.   


    using System;
    class A
    {
    public static int X;static A() //④ 执行完后返回到③
    {
    X = B.Y + 1;
    Console.WriteLine("static A()");
    }
    }class B
    {
    public static int Y = A.X + 1; //③ 调用了A的静态成员,
    // 转到A的静态构造函数---->static B() //② 如果带有初始值设定项的静态字段,
    // 执行该类的静态构造函数时,
    // 先要按照文本顺序执行那些初始值设定项。
    // 转到初始值设定项---->
    {
    Console.WriteLine("static B()");
    }static void Main() //① 程序入口,
    // 如果类中包含用来开始执行的 Main 方法,
    // 该类的静态构造函数将在调用 Main 方法之前执行。
    // 转到B的静态构造函数---->
    {
    Console.WriteLine("X = {0}, Y = {1}", A.X, B.Y);//⑤ 输出结果
    Console.ReadLine();
    }
    }
      

  2.   

    首先执行public static  int y=A.x+1;这时发现有A.x,于是去掉A的构造函数,在A里Y肯定是0,于是输出0
    我建议你多单步调试看看程序是怎么执行的