我可以用 Java 编写:
public class Foo {
public static Foo DEFAULT_FOO;
static {
DEFAULT_FOO = new Foo();
// initialize
DEFAULT_FOO.init();
}
public Foo() {
}
void init() {
// initialize
}
}
如何在 C# 中获得相同的功能(静态成员在使用前被初始化)?而且,如果尝试这样做是一件坏事,还有什么更好的方法?
最佳答案
您使用静态构造函数,如下所示:
public class Foo
{
static Foo()
{
// inits
}
}
这里是 more info .
底线:它是一个带有 static
关键字的无参数构造函数。就像 Java 中的静态 block 一样工作。
编辑:还要提一件事。如果你只是想静态构造一些东西,你可以静态初始化一个变量,而不需要静态构造函数。例如:
public class Foo
{
public static Bar StaticBar = new Bar();
}
请记住,如果要在静态初始化期间调用 Bar 上的任何方法,则需要静态构造函数,因此调用 Foo.Init()
的示例仍然需要静态构造函数。我只是说你不受限制,仅此而已。 :)
关于c# - Java中静态{...}的c#等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1201992/