0
struct TestStruct
{        
    static TestStruct()
    {
        Console.WriteLine("TestStruct");
    }
}

在结构中调用静态无参数构造函数时。

4

2 回答 2

7

要显式但安全地调用它(仅一次,无需担心它是否存在等):

System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(
    type.TypeHandle);

然而:

在结构中调用静态无参数构造函数时。

如果您的意思是“运行时何时执行它” - 唯一安全的答案是它何时需要- 确切的细节非常复杂,并且在运行时之间会发生变化。依赖于这个的确切时间是不明智的。但是,它保证在您(例如)尝试访问任何静态字段之前执行。

于 2013-08-14T12:05:16.153 回答
0

静态构造函数由运行时自动调用。

调用它们时的规范详细信息:

11.3.10 静态构造函数

结构类型的静态构造函数的执行由在应用程序域中发生的以下第一个事件触发:

  • 引用了结构类型的静态成员。
  • 调用结构类型的显式声明的构造函数。

    结构类型的默认值(第 11.3.4 节)的创建不会触发静态构造函数。(这方面的一个例子是数组中元素的初始值。)

  • 于 2013-08-14T12:06:28.440 回答