class A
    {
        public static int X;
        static A()
        {
            X = B.Y+1;        }
    }
    class B
    {
        public static int Y=A.X+1;
        static B() { }     }有static B() { }和没有static B() { }为什么A.X和B.Y的值正好相反
有的话A.X=2 B.Y=1
没有的话A.X=1 B.Y=2
高人指点!!

解决方案 »

  1.   

    有static B() { }和没有static B() { }为什么A.X和B.Y的值正好相反 这一句好隐晦,看不懂。
      

  2.   

    static B() { } 就是类B的静态构造函数
      

  3.   

    对了的哇
    有就是先调B将Y弄成1
    A的X就是2了
    没有就是先调A将X弄成1
    B的Y就是2了
      

  4.   

    静态变量只能在静态构造函数里被赋值,如果没有静态构造函数,那么系统就会给静态变量指定该当类型的默认值.楼主的例子中,如果在classB中没有指定静态构造函数,那么在调用到classB里的变量时,它只是在获得默认值的基础上再加1,所以就等于1,而后被classA调用的时候,又加了1.
    如果带上静态构造函数,就会先调用classA里的构造函数,然后在调用本身,所以结果刚刚好出现了楼主所说的情况了.