Почему Main должен быть статичным, чтобы принимать аргументы командной строки? - PullRequest
1 голос
/ 08 октября 2011

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

Ответы [ 2 ]

12 голосов
/ 08 октября 2011

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

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

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

10 голосов
/ 08 октября 2011

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

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

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

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

...