[C#學習筆記] - 靜態構造函數與靜態成員初始化的調用順序

https://www.cnblogs.com/dirichlet/p/3266019.html?utm_source=itdadao&utm_medium=referral

結論

  1. 靜態構造函數不能有訪問修飾符,只能是static,且不能帶有參數。
  2. 實例化順序先靜態,後非靜態。先成員後構造函數。
  3. 實例化順序在2的基礎上受定義的順序影響,

示例

case-1

class A
{
    public static A a = new A();
    public static B b = new B();

    static A()
    {
        Console.WriteLine("static A()");
    }

    public C c = new C();

    public A()
    {
        Console.WriteLine("A()");
    }
}

class B
{
    public B()
    {
        Console.WriteLine("B()");
    }
}

class C
{
    public C()
    {
        Console.WriteLine("C()");
    }
}

// 實例化結果爲:
C()
A()
B()
static A()
C()
A()

case-2

class A
{
    // public static A a = new A();
    public static B b = new B();

    static A()
    {
        Console.WriteLine("static A()");
    }

    public C c = new C();

    public A()
    {
        Console.WriteLine("A()");
    }
}

class B
{
    public B()
    {
        Console.WriteLine("B()");
    }
}

class C
{
    public C()
    {
        Console.WriteLine("C()");
    }
}

// 實例化結果爲:
B()
static A()
C()
A()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章