- 确定类实例化时内部内容的执行顺序,同时也考虑到继承的关系。定义一个父类ParentClass和一个子类SubClass。
/// <summary>
/// 父类
/// </summary>
public class ParentClass
{
int id = 1;
public string PName { get; set; }
static int s = 2;
static public string Name { get; set; }
static ParentClass()
{
Console.WriteLine("我是父类的静态构造函数");
}
public ParentClass()
{
Console.WriteLine("我是父类的实例构造函数");
}
public void ShowMsg()
{
Console.WriteLine("我是父类的方法ShowMsg");
}
}
/// <summary>
/// 子类
/// </summary>
public class SubClass:ParentClass
{
int subid = 1;
public string SubPName { get; set; }
static int subs = 2;
static public string SubName { get; set; }
static SubClass()
{
Console.WriteLine("我是子类的静态构造函数");
}
public SubClass()
{
Console.WriteLine("我是子类的实例构造函数");
}
public void SubShowMsg()
{
Console.WriteLine("我是子类的方法SubShowMsg");
}
}
- 对父类子类中的每个字段和构造函数加断点,控制台调用实例化子类。
SubClass sub = new SubClass();
- 启动,根据断点执行顺序得出类实例化执行顺序为:
子类静态字段
子类静态构造函数
子类实例字段
父类静态字段
父类静态构造函数
父类实例字段
父类实例构造函数
子类实例构造函数
控制台输出结果:
属性和方法只有在调用的时候才会执行。