2009-07-29 11 views
17

In Java posso scrivere:qual è l'equivalente C# di static {...} in Java?

public class Foo { 

    public static Foo DEFAULT_FOO; 

    static { 
     DEFAULT_FOO = new Foo(); 
     // initialize 
     DEFAULT_FOO.init(); 
    } 

    public Foo() { 
    } 

    void init() { 
     // initialize 
    } 
} 

Come posso ottenere lo stesso functionailty in C# (in cui i membri statiche vengono inizializzate prima dell'uso)? E se questa è una brutta cosa da provare, qual è l'approccio migliore?

risposta

33

si utilizza un costruttore statico, come questo:

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

Ecco more info.

Bottom line: è un costruttore paramaterless con la parola chiave static ad esso associata. Funziona proprio come il blocco statico in Java.

Modifica: Un'altra cosa da dire. Se si desidera semplicemente creare qualcosa staticamente, è possibile inizializzare staticamente una variabile senza la necessità del costruttore statico. Per esempio:

public class Foo 
{ 
    public static Bar StaticBar = new Bar(); 
} 

Tenete a mente che avrete bisogno di un costruttore statico, se si desidera chiamare i metodi su Bar durante l'inizializzazione statica, così il vostro esempio che chiama Foo.Init() ha ancora bisogno di un costruttore statico. Sto solo dicendo che non sei limitato, tutto qui. :)

+0

Wow! Grazie per le risposte incredibilmente veloci –

3

statica è ancora la parola chiave in C#:

public class Foo { 
    public static Foo DefaultFoo; 

    static Foo { 
     DefaultFoo = new Foo(); 
     // initialize 
     DefaultFoo.init(); 
    } 

    public Foo() { 
    } 

    void init() { 
     // initialize 
    } 
} 
Problemi correlati