Вопрос по c#, static, java – что такое эквивалент C # статического {...} в Java?

20

На Java я могу написать:

public class Foo {

    public static Foo DEFAULT_FOO;

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

    public Foo() {
    }

    void init() {
        // initialize
    }
}

Как я могу получить ту же функцию в C # (где статические члены инициализируются перед использованием)? И, если это плохая вещь, чтобы попытаться сделать, что является лучшим подходом?

Ваш Ответ

2   ответа
38

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

Здесь & APOS; sбольше информации.

Итог: это конструктор без параметров сstatic Ключевое слово прикреплено к нему. Работает так же, как статический блок в Java.

Edit: Еще одна вещь, чтобы упомянуть. Если вы просто хотите создать что-то статически, вы можете статически инициализировать переменную без необходимости использования статического конструктора. Например:

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

Помните, что вам понадобится статический конструктор, если вы хотите вызывать какие-либо методы в Bar во время статической инициализации, поэтому ваш пример, который вызываетFoo.Init() все еще нужен статический конструктор. Я просто говорю, Вы не ограничены, вот и все. :)

Вот Это Да! Спасибо за невероятно быстрые ответы peter.murray.rust
3

public class Foo {
    public static Foo DefaultFoo;

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

    public Foo() {
    }

    void init() {
        // initialize
    }
}
Это не компилируется в C #. Вам нужно() в соответствииstatic Foo() {...}.

Похожие вопросы