C# 类初始化顺序

转自:http://www.cnblogs.com/jackhuclan/archive/2008/01/10/1033042.html

代码
    class Program
    {
        
static void Main(string[] args)
        {
            DriveB d 
= new DriveB();
            Console.Read();
        }
    }

    
class BaseA
    {
        
static DisplayClass a = new DisplayClass("基类静态成员初始化");

        DisplayClass BaseA_c 
= new DisplayClass("基类实例成员初始化");

        
static BaseA()
        {
            
new DisplayClass("基类静态构造方法被调用");
        }

        
public BaseA()
        {
            
new DisplayClass("基类构造方法被调用");
        }
    }

    
class DriveB : BaseA
    {

        
static DisplayClass DriveB_b = new DisplayClass("继承类静态成员初始化");


        DisplayClass DriveB_c 
= new DisplayClass("继承类实例成员初始化");

        
static DriveB()
        {
            
new DisplayClass("继承类静态构造方法被调用");
        }

        
public DriveB()
        {
            
new DisplayClass("继承类构造方法被调用");
        }
    }
    
class DisplayClass
    {
        
public DisplayClass(string diplayString)
        {
            Console.WriteLine(diplayString);
            Console.WriteLine();
        }
    }

调用顺序:

1.继承类静态成员初始化

2.继承类静态构造方法被调用

3.继承类实例成员初始化

4.基类静态成员初始化

5.基类静态构造方法被调用

6.基类实例成员初始化

7.基类构造方法被调用

8.继承类构造方法被调用

原文地址:https://www.cnblogs.com/xgw2004058/p/1757245.html