首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

virtual 与 override,该怎么处理

2012-07-31 
virtual 与 overrideC# codeclass A{public A(){PrintFields()}public virtual void PrintFields(){}}cla

virtual 与 override

C# code
   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);        }    }    class Program    {        static void Main(string[] args)        {            B b = new B();            b.PrintFields();            Console.ReadKey();        }    }

输出为什么是 
x=1,y=0
x=1,y=-1

为什么输出两次呢

[解决办法]
构造函数输出一次,b.PrintFields输出一次。
[解决办法]
先执行A的构造,这是y还是0,再执行b的构造,y变成-1

热点排行