繁体   English   中英

Java中静态{...}的c#等价物是什么?

[英]what is the c# equivalent of static {…} in Java?

在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
  }
}

这是更多信息

底线:它是一个无命名的构造函数,附加了static关键字。 就像Java中的静态块一样工作。

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

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

请记住,如果要在静态初始化期间调用Bar上的任何方法,则需要静态构造函数,因此调用Foo.Init()示例仍需要静态构造函数。 我只是说'你没有限制,就是全部。 :)

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

public class Foo {
    public static Foo DefaultFoo;

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

    public Foo() {
    }

    void init() {
        // initialize
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM