1 #region 实例化B 打印输出 结果为x=1,y=0为什么 2 /* 3 实例化B后,先进入B的构造函数,在进入A的构造函数, 4 随之调用A中的 PrintFields(); 方法,由于在父类中 5 该方法定义为虚方法,于是去找子类中被重写的方法, 6 此时,子类中打印的结果分别为x,y的初始值即 x=1,y=0, 7 但是,程序还没有结束,继续去子类中的构造函数,虽然 8 x,y被重新赋值,因为在上一步中打印已经结束,最终输出的结果 9 就是上面提到的,x,y的初始值 10 */ 11 public class A 12 { 13 public A() 14 { 15 PrintFields(); 16 } 17 18 public virtual void PrintFields() { } 19 } 20 21 22 public class B : A 23 { 24 int x = 1; 25 int y; 26 27 public B() 28 { 29 x = 2; 30 y = -1; 31 } 32 33 public override void PrintFields() 34 { 35 Console.WriteLine("x={0},y={1}", x, y); 36 } 37 } 38 #endregion
原文:https://www.cnblogs.com/ABC-wangyuhan/p/14182420.html