Pregunta

¿Cuál es la diferencia real entre un constructor estático C # y un bloque estático de Java?

Los dos deben estar sin parámetros. Ambos son llamados sólo una vez, cuando se utilizó por primera vez la clase relacionada.

Me estoy perdiendo algo, o son la misma cosa, sólo que con diferentes nombres?

¿Fue útil?

Solución

Son equivalentes, excepto que una clase C # sólo puede tener un constructor estático (más inicializadores de campo estático).

Además, en C #, un constructor static aplicará la beforefieldinit bandera .

Otros consejos

Se ven lo mismo, muestra el siguiente ejemplo, que C # constructor estático funciona igual que el bloque estático en Java

protected Singleton()
{
    Console.WriteLine("Singleton constructor");
}

    private static readonly Singleton INSTANCE;

    static Singleton() {
        try {
           INSTANCE = new Singleton();
        }
        catch(Exception e) {
            throw new Exception();
        }
    }

Sí Son equivalentes Otro punto es Java no soporta constructor estático, pero admite bloque estático y C # constructor estático de soporte.

No son.

En C #, no sólo puede contener bloques constructores. En java que son capaces de ejecutar instrucciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top