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);
}
答:X=1,Y=0
y=0想不明白......
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);
}
答:X=1,Y=0
y=0想不明白......
new B()顺序上先A构造,再构造B
所以0啦
你可以在每个构造和方法中放置Console.WriteLine来观察顺序
不知道是不是对的。。
int x=1;
int y;
然后调用构造函数,调用构造函数先调用父类构造函数
执行PrintFields(); 因为PrintFields是虚方法,执行的B的PrintFields方法
这时候y还没有赋值,用int默认值0