Почему C# использует неявный void Main?
Я не понимаю, почему C# ' S Main
по умолчанию функция void (например, в консольном проекте). В C и C++ стандарт ясно говорит, что main должен возвращать int, и использование возвращаемого значения имеет смысл, потому что мы можем проверить это возвращаемое значение из внешней программы и посмотреть, успешно ли приложение C/C++ завершило работу или обнаружило ошибку.
Итак, мои вопросы:
- почему Visual Studio объявляет
Main
недействительным? - что лучший способ вернуть значение в ОС после завершения выполнения консольного приложения C#?
8 ответов
В C#, вы можете использовать см. MSDN :
static int Main()
static int Main(string[] args)
static void Main()
static void Main(string[] args)
эта гибкость (путаница) также существует в C++ и наследуется от C.
вы также можете вернуть значение (int) двумя способами.
в консольном приложении я бы использовал int Main() { ...; return 2; }
в WinForms/WPF/... app, в редкой ситуации ему нужно возвращаемое значение, я бы использовалEnvironment.ExitCode = 1;
или Environment.Exit(1);
можно использовать int или void в качестве возвращаемого типа. Таким образом, просто измените его и возвращать значение, как в C++.
возможно, это пустота по умолчанию, чтобы не озадачивать новичков.
Это не неявно пустоту. Как и в, вы не можете просто объявить main (String[] args) и скомпилировать его как функцию void. Проекты по умолчанию объявляют main () как void, потому что проекты по умолчанию не имеют ничего полезного для возврата из main.
также стоит отметить, что C# не является C или c++. Некоторые синтаксисы одинаковы, но различия гораздо шире.
причины, по которым разработчики C#решили объявить Main как void, я не мог сказать. Что касается возврата значений в ОС после завершения работы приложения, вы можете использовать следующее:
System.Environment.ExitCode = 1; // Or whatever number other than 0 for errors.
помните, что вокруг вашей программы есть еще одна "коробка" - CLR. Он будет возвращать коды ошибок, когда ваш код выдает необработанное исключение.
лучший способ вернуть значение выхода-использовать. Я говорю это, потому что ненулевые коды выхода обычно используются для обозначения некоторой ошибки, обычно той, от которой вы не хотите продолжать. Зову Exit
с ненулевым значением выхода оба сигнализируют об ошибке через значение и выходят из программы.
Environment.Exit( value );
редактировать: обратите внимание, что контекст для моего заявления был в Main
для консольной программы. Библиотеки и другие методы должны вызывать исключения или возвращать ошибку ценности. Только ваша основная процедура должна вызывать Exit
. Извини, если не ясно.
можно использовать Environment.Exit()
для завершения и возврата целочисленного кода в ОС. Кроме того, вы можете установить Environment.ExitCode
и этот код будет возвращен в ОС всякий раз, когда ваша программа завершается нормально.