Статические кодовые блоки
Переход от Java
до C#
У меня есть следующий вопрос:
В java я мог бы сделать следующее:
public class Application {
static int attribute;
static {
attribute = 5;
}
// ... rest of code
}
Я знаю, что могу инициализировать это из конструктора, но это не соответствует моим потребностям (я хочу инициализировать и вызывать некоторые служебные функции без создания объекта).
Поддерживает ли С# это? Если да, как я могу это сделать?
Спасибо заранее,
Ответы
Ответ 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();
}
}
}
Выход:
Это статический конструктор.
Это основная функция.