静态构造函数

第一次初始化类型的任何成员,调用静态类成员或静态方法时,将调用静态构造函数。静态构造函数是线程安全的。静态构造函数通常用于:

  • 初始化静态,即在同一个类的不同实例之间共享的状态。
  • 创建单例

例:

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();
    }
}