日期:2014-05-18  浏览次数:20463 次

一道面试题目~~~有答案但不知道为什么?高手门告诉下
在下面的例子里
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


为什么会打印出4个啊~~~~把程序运行的顺序告诉我下,讲的详细点.谢谢大家了

------解决方案--------------------
new B()运行过程如下:
先调用父类的构造函数,接着调用B中的PrintFields();(因为原型是B类型)
接着调用B构造函数,接着调用PrintFields();