什么是C#相当于静态的{...}在Java中?(what is the c# equivalent

2019-07-31 02:06发布

在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? 而且,如果这是一件坏事,试图做的,什么是更好的方法?

Answer 1:

使用静态构造函数,就像这样:

public class Foo
{
  static Foo()
  {
     // inits
  }
}

这里的更多信息 。

底线:这是一个paramaterless构造与static连接到它的关键字。 工作就像Java中的静态块。

编辑:还有一两件事提。 如果你只是想静态构造的东西,你可以静态初始化的变量,而不需要对静态构造函数。 例如:

public class Foo
{
  public static Bar StaticBar = new Bar();
}

记住,如果你想调用静态初始化期间在酒吧的任何方法,你需要一个静态构造函数,所以你的例子调用Foo.Init()仍然需要一个静态构造函数。 我只是说你没有限制,仅此而已。 :)



Answer 2:

静态仍然在C#中的关键字:

public class Foo {
    public static Foo DefaultFoo;

    static Foo {
        DefaultFoo = new Foo();
        // initialize 
        DefaultFoo.init();
    }

    public Foo() {
    }

    void init() {
        // initialize
    }
}


文章来源: what is the c# equivalent of static {…} in Java?
标签: c# java static