溫馨提示×

C#中的靜態構造函數是如何工作的

c#
小樊
90
2024-09-11 01:35:25
欄目: 編程語言

在C#中,靜態構造函數是一種特殊類型的構造函數,用于初始化靜態成員或執行僅需要進行一次的靜態初始化。它的主要特點是:

  1. 靜態構造函數沒有訪問修飾符,因為它們在內部自動調用。
  2. 靜態構造函數不能被顯式調用,也不能有參數。
  3. 靜態構造函數在實例化類或引用任何靜態成員之前自動執行。
  4. 靜態構造函數只執行一次,即使創建了多個類的實例。
  5. 靜態構造函數的主要目的是初始化靜態變量和靜態事件。

靜態構造函數的工作原理如下:

  1. 當程序加載類時,它會查找并執行靜態構造函數。這通常發生在首次引用該類之前。
  2. 靜態構造函數按照它們在代碼中出現的順序執行。
  3. 靜態構造函數在單線程環境中執行,確保線程安全。
  4. 如果靜態構造函數引發異常,運行時將不會再次調用該靜態構造函數,并且類型在當前應用程序域中將被視為未初始化。

以下是一個簡單的示例,展示了靜態構造函數的用法:

public class MyClass
{
    // 靜態變量
    public static int MyStaticVariable;

    // 靜態構造函數
    static MyClass()
    {
        MyStaticVariable = 10;
        Console.WriteLine("靜態構造函數已執行");
    }

    // 實例構造函數
    public MyClass()
    {
        Console.WriteLine("實例構造函數已執行");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("創建類的實例");
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();

        Console.ReadKey();
    }
}

輸出結果:

靜態構造函數已執行
創建類的實例
實例構造函數已執行
實例構造函數已執行

從輸出結果可以看出,靜態構造函數在創建類的實例之前自動執行,并且只執行一次。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女