Почему Main должен быть статичным, чтобы иметь возможность принимать аргументы командной строки?

#c# #.net #command-line-arguments

#c# #.net #аргументы командной строки

Вопрос:

Должен ли я иметь 2 разных метода Main, 1 без каких-либо аргументов и 1 с string[] args закрытым и статическим?

Комментарии:

1. Можете ли вы опубликовать пример? Я не совсем понимаю.

2. Я не понимаю вопроса. Почему вы не ожидаете, что метод должен быть статичным? (И зачем вам две версии Main метода — если вы хотите принимать аргументы, объявите string[] параметр, содержащий их, и это единственная версия метода, которую вы должны иметь.)

3. social.msdn.microsoft.com/Forums/en-AU/clr/thread/…

4. Что меня смущает, так это то, имеет ли метод статический или нет отношение к его аргументам.

5. Извините, ребята, я запутался с методом MainWindow, который не был статичным.

Ответ №1:

Почему это Main должно быть static чтобы иметь возможность принимать аргументы командной строки?

Вот, исправил это для вас.

Main должен быть статическим, чтобы его можно было вызывать без экземпляра объекта. Это необходимо, потому Main что вызывается перед созданием любых экземпляров.

Ответ №2:

Нет — у вас должен быть только один Main метод. Действительно, если у вас более одного статического Main метода в классе, я не верю, что вы можете указать этот класс в качестве точки входа.

Однако он должен быть статичным; класс не может быть универсальным, как и метод. Это может быть:

  • Любая доступность (как и класс)
  • Void или возвращаемое значение int
  • Без параметров или иметь тип параметра string[]

Он должен быть статическим и не универсальным, поскольку в противном случае CLR пришлось бы создавать экземпляр класса или определять, какой параметр типа вы хотите, соответственно. У него недостаточно информации для принятия любого из этих решений, но ему не нужна никакая информация для статического не-универсального метода в не-общем классе.