在Java中我可以这样写:
public class Foo {
public static Foo DEFAULT_FOO;
static {
DEFAULT_FOO = new Foo();
// initialize
DEFAULT_FOO.init();
}
public Foo() {
}
void init() {
// initialize
}
}
我怎样才能获得在C#中(其中静态成员在使用前进行初始化)相同functionailty? 而且,如果这是一件坏事,试图做的,什么是更好的方法?
使用静态构造函数,就像这样:
public class Foo
{
static Foo()
{
// inits
}
}
这里的更多信息 。
底线:这是一个paramaterless构造与static
连接到它的关键字。 工作就像Java中的静态块。
编辑:还有一两件事提。 如果你只是想静态构造的东西,你可以静态初始化的变量,而不需要对静态构造函数。 例如:
public class Foo
{
public static Bar StaticBar = new Bar();
}
记住,如果你想调用静态初始化期间在酒吧的任何方法,你需要一个静态构造函数,所以你的例子调用Foo.Init()
仍然需要一个静态构造函数。 我只是说你没有限制,仅此而已。 :)
静态仍然在C#中的关键字:
public class Foo {
public static Foo DefaultFoo;
static Foo {
DefaultFoo = new Foo();
// initialize
DefaultFoo.init();
}
public Foo() {
}
void init() {
// initialize
}
}