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

maf*_*afu 8 c# static-constructor

我正在使用以下代码调用类的静态ctor:

Type type;
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
Run Code Online (Sandbox Code Playgroud)

这会导致cctor运行两次吗?

Tho*_*que 9

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码打印:

Foo
Bar

  • 恕我直言,他们不可能做出如此突破性的变化...... (2认同)