A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马胜骁 初级黑马   /  2013-3-16 18:38  /  2767 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A
    {
        public static int X;
        static A()
        {
            X = B.Y + 1;
        }
    }
    class B
    {
        public static int Y ;
        static B()
        {
            Y = A.X + 1;
        }
        static void Main()
        {
            Console.WriteLine("x={0},y={1}",A.X,B.Y);
            Console.ReadKey();
        }
    }

评分

参与人数 1技术分 +1 收起 理由
彭清贵 + 1

查看全部评分

6 个回复

倒序浏览
调试模式 打个断点自己走一遍 基本就懂了
回复 使用道具 举报
程序运行是从Main()开始的,所以先执行同一个Class B下的B()方法, B()方法调用A(), A()又再调用B() , 这里B()被执行了两次
回复 使用道具 举报
这题是重复发的哈  http://bbs.itheima.com/forum.php ... mp;page=1#pid256920 这个地址去看一下  有详细解答
回复 使用道具 举报
为啥我运行结果为。。x=1,y=2,调试的时候是先执行B.Y的,难道因为编译器不一样?我用的VS2010 win32位.
Console.WriteLine()中的参数执行顺序是如何的。。?
回复 使用道具 举报
执行了下:
回复 使用道具 举报
我刚才也试了一下,如果把一楼的代码复制粘贴的话,那么就和楼上的相反了,我查了下,那个static A() 这个方法,在按个msdn里面叫做什么静态构造函数;不过也还是不太懂
C:\Users\Bruce\Desktop\20130517002044.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马