Значения, возвращаемые методом 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#)

Практическое руководство. Доступ к аргументам командной строки с помощью оператора "foreach" (Руководство по программированию в C#)

Основные понятия

Руководство по программированию в C#

Main() и аргументы командной строки (Руководство по программированию в C#)

Другие ресурсы

Справочник по C#