12

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

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

我是否遗漏了某些东西,或者它们是相同的东西,只是名称不同?

4

4 回答 4

10

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

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

于 2010-03-17T19:35:03.280 回答
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();
        }
    }
于 2011-10-12T11:01:06.590 回答
0

是的,它们是等价的还有一点是java不支持静态构造函数但支持静态块,c#支持静态构造函数。

于 2016-01-27T11:45:25.533 回答
-2

他们不是。

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

于 2010-07-21T20:26:55.753 回答