RunClassConstructor是否只能运行一次类型的静态构造函数?

时间:2010-04-17 13:49:41

标签: c# static-constructor

我正在使用此代码调用类的静态代码:

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

这会导致cctor运行两次吗?

1 个答案:

答案 0 :(得分:8)

RunClassConstructor只运行一次静态构造函数,即使你调用它两次。试试吧;)

using System.Runtime.CompilerServices;
...

void Main()
{
    RuntimeHelpers.RunClassConstructor(typeof(Foo).TypeHandle);
    RuntimeHelpers.RunClassConstructor(typeof(Foo).TypeHandle);
    Foo.Bar();
}

class Foo
{
    static Foo()
    {
        Console.WriteLine("Foo");
    }

    public static void Bar()
    {
        Console.WriteLine("Bar");
    }
}

此代码打印:

  


  杆