Доступные сигнатуры метода Main и что выбрать
27 Sep 2017Опираясь на исходный код метода HasEntryPointSignature, который используется компилятором для нахождения точки входа в наше приложение, можно смело заключить, что:
- сигнатура метода должна определять возвращаемое значение как
int
илиvoid
; - сигнатура метода должна определять входной аргумент как
string[]
или его отсутствие;
В противном случае Compiler Error CS5001 нарочито сообщит нам о допущенной ошибке:
Main must be declared as static and it must return void or int, and it must have either no parameters or else one parameter of type string[].
Начиная с C# 7.1 так же доступно использование async
keyword и возвращаемые значения типов Task
и Task<int>
. Для успешной компиляции необходимо используя Visual Studio 15.3 редакции в Project properties > Build > Advanced > Language version
выставить значение C# 7.1
:
Выбор необходимой сигнатуры обуславливается необходимостью возвращать результат выполнения нашего приложения и конфигурации посредством передаваемых аргументов.
Однако, наличие более одного класса содержащего метод Main
не воспрещается и определение точки входа может осуществляться на этапе компиляции с использованием аргумента /main.
Follow me online
Join the Discord: https://discord.gg/V4yMGPQzRB
- GitHub: https://github.com/FSou1
- LinkedIn: https://www.linkedin.com/in/maxim-zhukov-dev
- Youtube: https://www.youtube.com/channel/UCz6AZvABoICHPpi43y-Hd5g
- Telegram: https://t.me/seasoneddev