C#执行初始化顺序
2012-02-16 20:42
246 查看
c++没有静态构造方法和内联成员初始化而C#有这两种特性,其执行的先后顺序是不一样的,在平常编码中鲜有遇到问题的时候,不过居然有区别,也是基础知识还是应该知道的。
C#执行初始化顺序:
子类静态内联(inline)方式初始化字段。
基类静态内联(inline)方式初始化字段。
子类静态构造方法。
基类静态构造方法
基类非静态内联成员初始化。
子类非静态内联成员初始化。
例子:(来至http://www.cnblogs.com/hkncd/archive/2011/06/05/2073404.html)
答案:
b1
b3
b2
a1
a3
a2
a4
b4
b5
C#执行初始化顺序:
子类静态内联(inline)方式初始化字段。
基类静态内联(inline)方式初始化字段。
子类静态构造方法。
基类静态构造方法
基类非静态内联成员初始化。
子类非静态内联成员初始化。
例子:(来至http://www.cnblogs.com/hkncd/archive/2011/06/05/2073404.html)
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(); } } public class MyTest { public MyTest(string info) { Console.WriteLine(info); } }
答案:
b1
b3
b2
a1
a3
a2
a4
b4
b5
相关文章推荐
- C# 小测试(一):类成员初始化与构造函数执行的顺序
- C#创建对象时各种初始化属性、字段的方式的执行顺序
- C# 中关于类初始化时内部变量的执行顺序
- SpirngMVC系统启动系统配置初始化执行顺序以及防止onApplicationEvent执行两次
- Java300StudyNote(7)-JVM核心机制(2)-初始化时机-类的主动引用、被动引用、静态初始化块执行顺序问题
- 【转】类初始化中实例变量的执行顺序
- Java_20_循环结构_While循环_Do-while循环(执行顺序:初始化、布尔表达式条件判断、循环体、迭代)
- [C#]控件的几个事件的执行顺序
- [C#解惑] #2 对象的初始化顺序
- 测试子父类初始化执行顺序
- 类继承和初始化类的执行顺序
- Java类静态属性、静态块、非静态属性、非静态块、构造函数在初始化时的执行顺序
- java构造函数和初始化函数的执行顺序
- 类成员初始化与构造函数执行的顺序 转自:http://www.cnblogs.com/anderslly/archive/2008/07/12/why-do-initializers-run-in-the-opposite-order-as-constructors.html
- C#.net Page执行顺序
- 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
- java变量,初始化快,构造函数的执行顺序,运算符的优先级(从高到低)
- C#类执行顺序
- java变量,初始化快,构造函数的执行顺序
- C#继承中构造函数,成员变量的执行顺序