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?

¿Fue útil?

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
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top