このコードを使用して、クラスの静的コンストラクターを呼び出しています。
Type type;
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
これにより、cctorが2回実行される可能性がありますか?
このコードを使用して、クラスの静的コンストラクターを呼び出しています。
Type type;
System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(type.TypeHandle);
これにより、cctorが2回実行される可能性がありますか?
RunClassConstructor
静的コンストラクターは、2回呼び出しても、1回だけ実行されます。ちょうど試して ;)
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");
}
}
このコードは次のように出力します。
Foo
Bar