读书人

virtual 与 override,该怎么处理

发布时间: 2012-07-31 12:33:46 作者: rapoo

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

读书人网 >C#

热点推荐