如何在Main()方法之前在C#中运行静态初始化方法?
给定一个带有初始化方法的静态类:
public static class Foo { // Class members... internal static init() { // Do some initialization... } }
如何确保在Main()
之前运行初始化程序?
我能想到的最好的是将它添加到Foo
:
private class Initializer { private static bool isDone = false; public Initializer() { if (!isDone) { init(); isDone = true; } } } private static readonly Initializer initializer = new Initializer();
这有用还是有一些不可预见的警告? 还有更好的方法吗?
只需在Foo
的静态构造函数中进行初始化。
从文档:
在创建第一个实例或引用任何静态成员之前,会自动调用静态构造函数来初始化类。
您可以使用C#中的静态构造函数 。
public static class Foo { // Class members... static Foo(){ init(); // other stuff } internal static init() { // Do some initialization... } }
将代码从internal static
方法移动到static
构造函数,如下所示:
public static class Foo { // Class members... static Foo() { // Do some initialization... } }
这样你就可以确定静态构造函数将在第一次提到你的Foo
类时运行,无论是构造实例还是访问静态成员。