Подтвердить что ты не робот

Статические кодовые блоки

Переход от Java до C# У меня есть следующий вопрос: В java я мог бы сделать следующее:

public class Application {
    static int attribute;
    static {
        attribute = 5;
    }
   // ... rest of code
}

Я знаю, что могу инициализировать это из конструктора, но это не соответствует моим потребностям (я хочу инициализировать и вызывать некоторые служебные функции без создания объекта). Поддерживает ли С# это? Если да, как я могу это сделать?

Спасибо заранее,

4b9b3361

Ответ 1

public class Application() 
{     

    static int attribute;     
    static Application()
    {         
         attribute = 5;     
    }    // ..... rest of code 
}

Вы можете использовать эквивалентные статические конструкторы С#. Пожалуйста, не путайте это с обычным конструктором. Обычный конструктор не имеет модификатора static перед ним.

Я предполагаю, что ваш //... rest of the code должен быть запущен один раз. Если у вас нет такого кода, вы можете просто сделать это.

 public class Application()
 {     

    static int attribute = 5;
 }

Ответ 2

Вы можете просто написать блок статического конструктора, как это,

static Application(){
 attribute=5;
}

Это то, о чем я мог подумать.

Ответ 3

В вашем конкретном сценарии вы можете сделать следующее:

public class Application { 
    static int attribute = 5;
   // ... rest of code 
}

UPDATE:

Похоже, вы хотите вызвать статический метод. Вы можете сделать это следующим образом:

public static class Application {
    static int attribute = 5;

    public static int UtilityMethod(int x) {
        return x + attribute;
    }
}

Ответ 4

Я нахожу что-то еще полезное. Если вашей переменной требуется несколько выражений/операторов для инициализации, используйте это!

static A a = new Func<A>(() => {
   // do it here
   return new A();
})();

Этот подход не ограничивается классами.

Ответ 5

Статический конструктор -A не имеет параметров.
-A статический класс может содержать только один статический конструктор.
-A Статический конструктор выполняется первым, когда мы запускаем программу.

Пример:

namespace InterviewPreparation  
{  
    public static class Program  
    {  //static Class
        static Program()  
        { //Static constructor
            Console.WriteLine("This is static consturctor.");  
        }  
        public static void Main()  
        { //static main method
            Console.WriteLine("This is main function.");  
            Console.ReadKey();  
        }  
    }  
}  

Выход:
Это статический конструктор.
Это основная функция.