Ist ein Java statischer Block zu einem C # statischen Konstruktor äquivalent?
-
20-09-2019 - |
Frage
Was ist der Unterschied zwischen einem C # statischen Konstruktor und einem statischen Java-Block?
Sie müssen beide parameterlos sein. Sie sind beide nur einmal aufgerufen, wenn die betreffende Klasse zum ersten Mal verwendet wird.
Bin ich etwas fehlt, oder sind sie das Gleiche, nur mit anderen Namen?
Lösung
Sie sind gleichwertig, mit der Ausnahme, dass eine C # Klasse nur einen statischen Konstruktor hat (plus statisches Feld initializers).
Auch in C #, ein static
Konstruktor gelten die beforefieldinit
Flagge .
Andere Tipps
Sie sehen gleich aus, das folgende Beispiel zeigt, dass c # statische Konstruktor funktioniert genauso wie statischer Block in Java
protected Singleton()
{
Console.WriteLine("Singleton constructor");
}
private static readonly Singleton INSTANCE;
static Singleton() {
try {
INSTANCE = new Singleton();
}
catch(Exception e) {
throw new Exception();
}
}
Ja, sie sind gleichwertig Ein weiterer Punkt ist Java nicht statischen Konstruktor abe Unterstützung statischen Block und c # Unterstützung statischen Konstruktor unterstützt.
Sie sind es nicht.
In C # kann es Blöcke nur halten Konstrukteure. In Java sind Sie in der Lage Anweisungen auszuführen.