2009-07-29 15 views
17

En Java je peux écrire:Quel est l'équivalent 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 
    } 
} 

Comment puis-je obtenir le même functionailty en C# (où les membres statiques sont initialisées avant utilisation)? Et, si c'est une mauvaise chose à faire, quelle est la meilleure approche?

Répondre

33

vous utilisez un constructeur statique, comme ceci:

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

est ici more info.

Conclusion: il s'agit d'un constructeur sans paramètre auquel est associé le mot-clé static. Fonctionne exactement comme le bloc statique en Java.

Modifier: Encore une chose à mentionner. Si vous voulez simplement construire quelque chose de façon statique, vous pouvez initialiser statiquement une variable sans avoir besoin du constructeur statique. Par exemple:

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

Gardez à l'esprit que vous aurez besoin d'un constructeur statique si vous voulez appeler des méthodes sur Bar lors de l'initialisation statique, de sorte que votre exemple qui appelle Foo.Init() a encore besoin d'un constructeur statique. Je dis juste que tu n'es pas limité, c'est tout. :)

+0

Wow! Merci pour les réponses incroyablement rapides –

3

statique est toujours le mot-clé en C#:

public class Foo { 
    public static Foo DefaultFoo; 

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

    public Foo() { 
    } 

    void init() { 
     // initialize 
    } 
} 
Questions connexes