有趣的题目关于静态成员与非静态成员初始化顺序
2013-04-14 22:28
316 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConTest { public class BaseA { public static MyTest a1 = new MyTest("a1"); public MyTest a2 = new MyTest("a2"); static BaseA() { MyTest a3 = new MyTest("a3"); } public BaseA() { MyTest a4 = new MyTest("a4"); } public virtual void MyFun() { MyTest a5 = new MyTest("a5"); } } public class BaseB : BaseA { public static MyTest b1 = new MyTest("b1"); public MyTest b2 = new MyTest("b2"); static BaseB() { MyTest b3 = new MyTest("b3"); } public BaseB() { MyTest b4 = new MyTest("b4"); } public new void MyFun() { MyTest b5 = new MyTest("b5"); } } static class Program { static void Main() { BaseB baseb = new BaseB(); baseb.MyFun(); Console.ReadLine(); } } public class MyTest { public MyTest(string info) { Console.WriteLine(info); } } } 输出: b1 b3 b2 a1 a3 a2 a4 b4 b5 结论初始化的顺序为:静态成员变量实例化->静态构造函数->非静态成员变量实例化->构造函数->基类静态成员变量实例化->基类静态构造函数->基类非静态成员变量实例化->基类构造函数->派生类构造函数
相关文章推荐
- 关于非静态类的静态成员与非静态成员的初始化顺序(zhuang)
- 非静态类的静态成员与非静态成员的初始化顺序
- java 父类子类静态成员,实例成员,构造函数初始化的顺序
- 关于类的静态成员初始化
- java静态成员静态代码块初始化顺序
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺序
- 关于“只有静态常量整型数据成员才可以在类中初始化”
- 类的加载顺序以及静态成员初始化顺序
- java 父类子类静态成员,实例成员,构造函数初始化的顺序
- 类的初始化过程及静态成员之间的执行顺序
- Java类的创建时的静态和非静态的初始化顺序
- 静态成员的初始化顺序(C#,java)
- Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数
- 关于类成员的初始化顺序问题
- java静态成员初始化顺序
- C++静态类型成员变量的初始化顺序
- Java中含有静态成员的的初始化顺序
- 静态构造函数, 静态成员初始化/调用顺序
- Java父类、子类、静态成员和普通成员初始化的顺序