关于C#中执行顺序的问题。

namespace VirtualDemo { class Program { static void Main(string[] args) { B a = new B(); Console.ReadKey(); } } public class A { public A() { PrintFields(); } public virtual void PrintFields() { } } public class B : A { int x = 1; int y; public B() { y = -1; } public override void PrintFields() { Console.WriteLine("x={0},y={1}", x, y); } } }
这个输出结果是:x=1,y=0
请问是怎么得出来的???