[C#]父类与子类的静态成员变量、实例成员变量、构造函数的执行顺序

①子类静态成员变量
②子类静态构造函数
③子类实例成员变量
④父类静态成员变量
⑤父类静态构造函数
⑥父类实例成员变量
⑦父类构造函数
⑧子类构造函数

规则可以总结为:

  • 子类成员变量先于父类成员变量
  • 静态成员变量先于实例变量
  • 类成员变量初始化先于类的构造函数
  • 父类构造函数先于子类构造函数

测试的代码:

using System; using System.Collections.Generic; using System.Text; namespace 静态实例构造 { class showInfo { public showInfo(string Info) { Console.WriteLine(Info); } } class BaseClass { public static showInfo bssI = new showInfo("父类静态成员变量"); public showInfo bisI = new showInfo("父类实例成员变量"); static BaseClass() { showInfo bscsI = new showInfo("父类静态构造函数"); } public BaseClass() { showInfo bcsI = new showInfo("父类构造函数"); } } class DeriveClass : BaseClass { public static showInfo dssI = new showInfo("子类静态成员变量"); public showInfo disI = new showInfo("子类实例成员变量"); static DeriveClass() { showInfo dscsI = new showInfo("子类静态构造函数"); } public DeriveClass() { showInfo dcsI = new showInfo("子类构造函数"); } } class Program { static void Main(string[] args) { //各个对象的初始化顺序如下: //①子类静态成员变量 //②子类静态构造函数 //③子类实例成员变量 //④父类静态成员变量 //⑤父类静态构造函数 //⑥父类实例成员变量 //⑦父类构造函数 //⑧子类构造函数 DeriveClass dc = new DeriveClass(); Console.ReadKey(); } } }  

 

你可能感兴趣的:([C#]父类与子类的静态成员变量、实例成员变量、构造函数的执行顺序)