class Program
{
static void Main(string[] args)
{
B b = new B(); // ① 首先实例化B时,执行B的构造函数,跳转到②
b.PrintFields(); //④ //此处输出x= 1 y = -1
Console.ReadKey();
}
}
class A
{
public A() //③
{
PrintFields(); //执行此代码(实际上是B的方法),是B继承了A的构造函数吗?????疑问。。。 此处输出x=1,y=0.还未调用B的构造函数。 再跳转到②
}
public virtual void PrintFields() { }
}
class B : A
{
int x = 1;
int y;
public B() //② 由于B继承A,先执行A的构造函数,跳转到③
{
y = -1; //由③跳转回来后执行,初始化完毕 跳转到④
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
{
static void Main(string[] args)
{
B b = new B(); // ① 首先实例化B时,执行B的构造函数,跳转到②
b.PrintFields(); //④ //此处输出x= 1 y = -1
Console.ReadKey();
}
}
class A
{
public A() //③
{
PrintFields(); //执行此代码(实际上是B的方法),是B继承了A的构造函数吗?????疑问。。。 此处输出x=1,y=0.还未调用B的构造函数。 再跳转到②
}
public virtual void PrintFields() { }
}
class B : A
{
int x = 1;
int y;
public B() //② 由于B继承A,先执行A的构造函数,跳转到③
{
y = -1; //由③跳转回来后执行,初始化完毕 跳转到④
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
输出结果:
x=1,y=0;
x= 1 y = -1
一、