2009-07-29 25 views
17

En Java Puedo escribir:¿cuál es el equivalente de C# de static {...} en Java?

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 el mismo functionailty en C# (donde los miembros estática se inicializa antes de su uso)? Y, si esto es algo malo para intentar hacer, ¿cuál es un mejor enfoque?

Respuesta

33

se utiliza un constructor estático, como esto:

public class Foo 
{ 
    static Foo() 
    { 
    // inits 
    } 
} 

Aquí es more info.

En pocas palabras: es un constructor paramaterless con la palabra clave static adjunta. Funciona igual que el bloque estático en Java.

Editar: Una cosa más para mencionar. Si solo quiere 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 se necesita un constructor estático si desea llamar a cualquier método de bar durante la inicialización estática, por lo que su ejemplo que llama Foo.Init() todavía necesita un constructor estático. Solo digo que no estás limitado, eso es todo. :)

+0

Wow! Gracias por respuestas increíblemente rápidas –

3

estático 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 
    } 
} 
Cuestiones relacionadas