感谢你的阅读:1.在下面的例子里
      using System;
      class A
      {
           public A()
            {
                 PrintFields();
            }
           public virtual void PrintFields(){}
       }
       class B:A
       {
            int x=1;
            int y;
            public B()
            {
                y=-1;
            }
            public override void PrintFields()
            {
                Console.WriteLine("x={0},y={1}",x,y);
            }
当使用new B()创建B的实例时,产生什么输出?
答:X=1,Y=0;x= 1 y = -1怎么会产生两个输出的???期待你的解答:

解决方案 »

  1.   

    只产生一个
    X=1,Y=0不要问为什么
    想知道就去VS写入这段代码
    用TEXTBOX来显示输出
    单步调试
    你将得到完美的答案
      

  2.   

    new B()的时候首先会调用父类的构造函数,int x=1; int y;  所以输出X=1;Y=0;
    然后再在B的构造函数里对Y赋值,再输入x= 1 y = -1 
      

  3.   

    在b中重写父类a的PrintFields输出x=,y=
      

  4.   

    我在VS里面试了,是两个输出..而且是正确的只是不知道为什么...父类的构造函数不是空的吗?public A() 
                { 
                    PrintFields(); 
                } 
              public virtual void PrintFields(){}