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);
    }
}
执行以下代码
B obj = new B();
obj.PrintFields();
后输出结果是什么?并解释下程序执行的大致流程?

解决方案 »

  1.   

    B obj = new B();将进入B的构造,然后调用A的构造,然后调用B的PrintFields
    之后进入B的构造代码
    obj.PrintFields();直接执行B的PrintFields
      

  2.   


    先输出1, 0后输出1,-1实例化B时,先初始化B的全局变量(此时X值=1,Y没有默认值=0),再次实例化父类也就是 AA的构造函数里执行PrintFields();而PrintFields(); 被重写 则执行了B的,PrintFields()函数
    此时输出1, 0,
    再初始化 B的构造函数,将Y赋值-1
    到此实例化结束,执行了obj.PrintFields();
    输出1,-1楼主,请给分!
      

  3.   

    输出结果就是B obj = new B()这个吗