我使用以下代码调用类的静态ctor:
Type type;
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
这会导致cctor运行两次吗?
最佳答案
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");
}
}
此代码打印:
关于c# - 是否可以保证RunClassConstructor仅运行一次类型的静态构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2658561/