C# 有关静态构造函数

117 阅读1分钟

C# 中的静态构造函数(Static Constructor)不能有修饰符。静态构造函数在类的生命周期中只会执行一次,用于初始化静态成员或执行其他必要的静态初始化操作。

静态构造函数的语法如下:

static 类名()  { 
// 静态构造函数的代码逻辑 
}

请注意以下几点关于静态构造函数的特性:

  1. 静态构造函数没有访问修饰符,无论是 public、private 还是 protected 都不允许。
  2. 静态构造函数没有参数。
  3. 静态构造函数不能被直接调用,而是在访问类的静态成员之前自动执行。
  4. 如果没有显式定义静态构造函数,系统会默认提供一个无参的隐式静态构造函数。

下面是一个示例,展示了如何定义和使用静态构造函数:

using System;

class MyClass
{
    private static int counter;
    private static string message;

    // 静态构造函数
    static MyClass()
    {
        counter = 0;
        message = "Hello, World!";
        Console.WriteLine("静态构造函数被调用!");
    }

    public static void Method()
    {
        counter++;
        Console.WriteLine("{0} - {1}", counter, message);
    }
}

class Program
{
    static void Main()
    {
        MyClass.Method();
        MyClass.Method();
    }
}

运行以上代码,将会输出以下结果:

静态构造函数被调用!
1 - Hello, World!
2 - Hello, World!

注意,在上述示例中,静态构造函数在 Main 方法之前自动执行,并且仅执行一次。静态构造函数进行了一些初始化操作,然后我们通过调用 MyClass.Method() 来访问类的静态成员。