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

标签 c# java static

我可以用 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/

相关文章:

c# - 动态反序列化为 RestSharp 中的属性

c# - WPF:SizeToContent ="WidthAndHeight"+ WindowState ="Minimized"错误

c# - 在加载应用程序目录之外的目录中加载依赖于其他程序集的程序集?

c# - razor @helper 返回什么类型?

java - 如何获取onKeyPressed持续时间?

java - Java 和 Oracle 之间的字符串处理和编码

java - 在发布到应用商店后,Android应用会为所有设备引发UnsatisfiedLinkError

c++ - 将字符串转换为 char*

javascript - 如何为ES6类添加静态属性

c# - 静态方法是线程安全的吗