Java静态块是否等同于C#静态构造函数?

时间:2010-03-17 19:30:11

标签: c# java static-constructor static-block

C#静态构造函数和Java静态块之间的真正区别是什么?

它们都必须是无参数的。 当首次使用相关类时,它们都只被调用一次。

我错过了什么,或者他们是同一个东西,只是用不同的名字?

4 个答案:

答案 0 :(得分:9)

它们是等价的,除了C#类只能有一个静态构造函数(加上静态字段初始值设定项)。

此外,在C#中,static构造函数将应用beforefieldinit flag

答案 1 :(得分:2)

它们看起来一样,下面的例子显示,c#静态构造函数的工作方式与java中的静态块相同

protected Singleton()
{
    Console.WriteLine("Singleton constructor");
}

    private static readonly Singleton INSTANCE;

    static Singleton() {
        try {
           INSTANCE = new Singleton();
        }
        catch(Exception e) {
            throw new Exception();
        }
    }

答案 2 :(得分:0)

是的他们是等同的 另一点是java不支持静态构造函数但支持静态块和c#支持静态构造函数。

答案 3 :(得分:-2)

他们不是。

在C#中,块只能包含构造函数。在java中,您可以执行语句。