#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 пришлось бы создавать экземпляр класса или определять, какой параметр типа вы хотите, соответственно. У него недостаточно информации для принятия любого из этих решений, но ему не нужна никакая информация для статического не-универсального метода в не-общем классе.