Frage

In Java kann ich schreiben:

public class Foo {

    public static Foo DEFAULT_FOO;

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

    public Foo() {
    }

    void init() {
        // initialize
    }
}

Wie kann ich die gleiche functionailty in C # (wobei statischen Elementen vor der Verwendung initialisiert werden)? Und wenn dies eine schlechte Sache zu tun ist, um zu versuchen, was ist ein besserer Ansatz?

War es hilfreich?

Lösung

Sie verwenden einen statischen Konstruktor, wie folgt aus:

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

Hier ist weitere Informationen .

Fazit: es ist ein paramaterless Konstruktor mit dem static Stichwort attached to it. Funktioniert wie der statischen Block in Java.

Edit: Eine weitere Sache zu erwähnen. Wenn Sie nur statisch, etwas konstruieren wollen, können Sie statisch eine Variable, ohne die Notwendigkeit für den statischen Konstruktor initialisieren. Zum Beispiel:

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

Beachten Sie, dass Sie einen statischen Konstruktor benötigen, wenn Sie Methoden auf Bar bei der statischen Initialisierung aufrufen wollen, so dass Ihr Beispiel, das Foo.Init() nennt noch einen statischen Konstruktor muss. Ich bin gerade sayin Sie nicht auf diese beschränkt sind, ist alles. :)

Andere Tipps

Static ist immer noch das Schlüsselwort in C #:

public class Foo {
    public static Foo DefaultFoo;

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

    public Foo() {
    }

    void init() {
        // initialize
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top