如何在结构中调用静态无参数构造函数?

时间:2013-08-14 11:56:02

标签: c# struct

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

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

2 个答案:

答案 0 :(得分:7)

明确地 但是安全地(仅限一次,无需担心它是否存在等):

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

然而:

  

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

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

答案 1 :(得分:0)

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

规范详细说明:

  

11.3.10静态构造函数

     

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

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

         

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