您的位置:首页 > 编程语言 > C#

C#执行初始化顺序

2012-02-16 20:42 246 查看
c++没有静态构造方法和内联成员初始化而C#有这两种特性,其执行的先后顺序是不一样的,在平常编码中鲜有遇到问题的时候,不过居然有区别,也是基础知识还是应该知道的。
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: