using System;
namespace ConsoleApp
{
class Program
{
static void Main()
{
A a = new B();
Console.ReadKey();
}
}
class A
{
int z = 1;////////////////////////////////////////////7
int k;
static int i = 1;/////////////////////////////////5
static int j;
public A()////////////////////////////////////////////////8
{
k = -1;///////////////////////////////////////////9
PrintFields();///////////////////////////////////////////10
}
public virtual void PrintFields() { }
static A()
{
j = 2;/////////////////////////////////////////////6
}
}
class B : A
{
int x = 1; ///////////////////////////////////////3
int y;
static int m = 1;/////////////////////////////////1
static int n;
public B()//////////////////////////////////////////4
{
y = -1;///////////////////////////////////////12
PrintFields();///////////////////////////////13
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);////////////////////////////////11,14
}
static B()
{
n = 2;//////////////////////////////////////////2
}
}
}
本文探讨了C#中类继承情况下构造函数的调用顺序:先子类静态构造函数,再基类静态构造函数,之后是基类实例构造函数,最后是子类实例构造函数。通过具体的代码示例,详细解释了这一过程。
501

被折叠的 条评论
为什么被折叠?



