Es un bloque estático de Java equivalente a un constructor estático C #?
-
20-09-2019 - |
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?
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.