¿Cuál es el equivalente de c # de estática {& # 8230;} en Java?
Pregunta
En Java puedo escribir:
public class Foo {
public static Foo DEFAULT_FOO;
static {
DEFAULT_FOO = new Foo();
// initialize
DEFAULT_FOO.init();
}
public Foo() {
}
void init() {
// initialize
}
}
¿Cómo puedo obtener la misma funcionalidad en C # (donde los miembros estáticos se inicializan antes de usar)? Y, si es algo malo intentar hacer, ¿cuál es un mejor enfoque?
Solución
utiliza un constructor estático, como este:
public class Foo
{
static Foo()
{
// inits
}
}
Aquí hay más información .
Línea inferior: es un constructor sin parámetros con la palabra clave static
adjunta. Funciona igual que el bloque estático en Java.
Editar: Una cosa más que mencionar. Si solo desea construir algo estáticamente, puede inicializar estáticamente una variable sin la necesidad del constructor estático. Por ejemplo:
public class Foo
{
public static Bar StaticBar = new Bar();
}
Tenga en cuenta que necesitará un constructor estático si desea llamar a cualquier método en la barra durante la inicialización estática, por lo que su ejemplo que llama a Foo.Init ()
aún necesita un constructor estático. Solo digo que no estás limitado, eso es todo. :)
Otros consejos
Static sigue siendo la palabra clave en C #:
public class Foo {
public static Foo DefaultFoo;
static Foo {
DefaultFoo = new Foo();
// initialize
DefaultFoo.init();
}
public Foo() {
}
void init() {
// initialize
}
}