一道C#基础题,我看不懂 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 为什么会输出这样的结果呢,哪位仁兄能帮我解释一下啊,谢过了。
------解决方案-------------------- 先要执行默认构造函数
------解决方案-------------------- new B 的时候先构造基类A 此时的x,y 是他们的初始值 所以先输出 x = 1 y = 0 然后再构造B 给y附值 但是不会再输入结果 除非在B构造函数中再调用PrintFields(); 或者在 B b = new B(); b.PrintFields();