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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top