C# 静态构造函数和 Java 静态块之间的真正区别是什么?
它们都必须是无参数的。当第一次使用相关类时,它们都只被调用一次。
我是否遗漏了某些东西,或者它们是相同的东西,只是名称不同?
C# 静态构造函数和 Java 静态块之间的真正区别是什么?
它们都必须是无参数的。当第一次使用相关类时,它们都只被调用一次。
我是否遗漏了某些东西,或者它们是相同的东西,只是名称不同?
它们是等价的,只是一个 C# 类只能有一个静态构造函数(加上静态字段初始值设定项)。
此外,在 C# 中,static
构造函数将应用beforefieldinit
flag。
它们看起来一样,以下示例显示,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();
}
}
是的,它们是等价的还有一点是java不支持静态构造函数但支持静态块,c#支持静态构造函数。
他们不是。
在 C# 中,块只能包含构造函数。在java中,您可以执行语句。