[英]Is a Java static block equivalent to a C# static constructor?
C#静态构造函数和Java静态块之间的真正区别是什么?
它们都必须是无参数的。 当首次使用相关类时,它们都只被调用一次。
我错过了什么,或者他们是同一件事,只是用不同的名字?
它们是等价的,除了C#类只能有一个静态构造函数(加上静态字段初始值设定项)。
此外,在C#中, static
构造函数将应用beforefieldinit
标志 。
它们看起来一样,下面的例子显示,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中,您可以执行语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.