Значения, возвращаемые методом Main() (Руководство по программированию на C#)
Обновлен: Ноябрь 2007
Метод Main может возвращать значение типа void:
static void Main()
{
//...
}
Он также может возвращать значение типа int:
static int Main()
{
//...
return 0;
}
Если значение, возвращаемое методом Main использоваться не будет, то указание в качестве возвращаемого типа void несколько упрощает код. Однако возврат целого значения позволяет программе передавать информацию о своем состоянии другим программам и сценариям, которые вызывают исполняемые файл. Ниже показан пример использования значения, возвращаемого методом Main.
Пример
В этом примере с помощью пакетного файла запускается программа, после чего проверяется значение, возвращаемое функцией Main. При запуске программы в Windows значение, возвращаемое функцией Main, сохраняется в переменной среды, которая называется ERRORLEVEL. Проверка значения переменной ERRORLEVEL дает пакетному файлу возможность определить результат выполнения программы. В большинстве случаев на успешное выполнение указывает нулевое значение. Ниже показана простая программа, функция Main в которой возвращает ноль.
class MainReturnValTest
{
static int Main()
{
//...
return 0;
}
}
Поскольку в этом примере используется пакетный файлы, рекомендуется выполнять компиляцию кода с помощью командной строки, как описано в разделе Практическое руководство. Задание переменных среды.
После этого с помощью пакетного файла будет запущен исполняемый файл, созданный на основе приведенного выше примера кода. Поскольку в результате выполнения кода будет возвращено значение 0, пакетный файл сообщит об успешном запуске программы. Если же изменить код таким образом, чтобы возвращалось значение, отличное от нуля, а затем повторно скомпилировать его, при выполнении пакетного файла будет отображено сообщение о сбое.
rem test.bat
@echo off
MainReturnValueTest
@if "%ERRORLEVEL%" == "0" goto good
:fail
echo Execution Failed
echo return value = %ERRORLEVEL%
goto end
:good
echo Execution Succeded
echo return value = %ERRORLEVEL%
goto end
:end
Пример результатов выполнения
Execution Succeded
return value = 0
См. также
Задачи
Основные понятия
Руководство по программированию в C#
Main() и аргументы командной строки (Руководство по программированию в C#)