靜態建構函式

第一次初始化型別的任何成員,呼叫靜態類成員或靜態方法時,將呼叫靜態建構函式。靜態建構函式是執行緒安全的。靜態建構函式通常用於:

  • 初始化靜態,即在同一個類的不同例項之間共享的狀態。
  • 建立單例

例:

class Animal
{
    // * A static constructor is executed only once,
    //   when a class is first accessed.
    // * A static constructor cannot have any access modifiers
    // * A static constructor cannot have any parameters
    static Animal()
    {
        Console.WriteLine("Animal initialized");
    }

    // Instance constructor, this is executed every time the class is created
    public Animal()
    {
        Console.WriteLine("Animal created");
    }

    public static void Yawn()
    {
        Console.WriteLine("Yawn!");
    }
}

var turtle = new Animal();
var giraffe = new Animal();

輸出:

動物初始化
動物建立
動物建立

檢視演示

如果第一次呼叫是靜態方法,則在沒有例項建構函式的情況下呼叫靜態建構函式。這沒關係,因為靜態方法無論如何都無法訪問例項狀態。

Animal.Yawn();

這將輸出:

動物初始化了
哈欠!

另請參見靜態建構函式通用靜態構造 函式中的異常

單例示例:

public class SessionManager
{
    public static SessionManager Instance;

    static SessionManager()
    {
        Instance = new SessionManager();
    }
}