有如下代码:
using System;
class B
{
    public static int Y = A.X + 1;
    static B() { }
    static void Main()
    {
        Console.WriteLine("X={0},Y={1}", A.X, B.Y);
        Console.Read();
    }
}
class A
{
    public static int X;
    static A()
    {
        X = B.Y + 1;
        Console.WriteLine(B.Y.ToString());
    }
}
我试着将类A放在类B的前面,在调试的时候发现怎么也是先执行类A的呀.c#的代码执行顺序到底有什么规则啊

解决方案 »

  1.   

    静态方法当然是先执行了
    你的ClassA有个静态的构造函数
      

  2.   

    类初始化的时候先初始到了
    public static int Y = A.X + 1;  这句话
    而你a.x是a类里面的
    所有又开始初始化a类.
      

  3.   

    程序入口在B类中,首先初始化静态变量Y,Y需要调用A的静态变量X,则对A进行构造对象,首先初始化A的静态变量X,X=0,然后初始化A的静态构造函数,此时Y=0,所以X=0+1=1,A构造完成,回到B,Y=1+1=2,然后再进行B的静态构造函数,但什么也没做,然后输出结果,X=1,Y=2