Использование Environment.ExitCode по сравнению с возвратом int из Main

Я планирую использовать код возврата исполняемого файла С# в одной из моих оболочек script. У меня есть два варианта:

Возврат значения int из основного метода

class MainReturnValTest
{
    static int Main()
    {
        //...
        return 0;
    }
}

(OR),

Использование среды. Exit с кодом выхода

class MainReturnValTest
{
    static void Main()
    {
        //...
        Enviroment.Exit(exitCode);
    }
}

Можно ли использовать любой из приведенных выше способов для возврата значения из исполняемого файла? Или один из них предпочтительнее других?

Ответ 1

Environment.Exit() является грубым прерыванием. Он мгновенно завершает процесс. Используйте его только тогда, когда вы обнаруживаете общий сбой, он подходит, например, в обработчике событий AppDomain.UnhandledException. Это запускается, когда ваша программа вот-вот завершится из-за необработанного исключения.

Каково ваше преимущество: исключения - хороший способ сигнализировать о необычных условиях, которые должны прервать программу с помощью ExitCode, который не равен нулю. Фактически, он автоматически получает значение свойства HResult для исключения. Не требуется код.

Ответ 2

Если вы пишете линейную программу, то возврат из Main прекрасен. Если у вас более сложная логика или, возможно, другие потоки выполнения, вы можете использовать Exit(returnCode). Оба способа будут эквивалентны вашей оболочке script.

Ответ 3

Разница заключается в том, что вам нужно обработать событие в родительском приложении на основе состояния выхода другого приложения. Возврат в основном используется в приложении, а выход используется для внезапного завершения приложения. Здесь статус выхода может использоваться другим приложением для принятия последующих шагов.

Возврат используется, когда вы возвращаете значение другой функции, из которой вызывается код. или указать конец выполнения кода на каком-либо событии.

Вы также можете увидеть это следующим образом:

1) Возврат завершает функцию, которая может быть main(); для завершения программы используется выход.

2) Завершение программы с определенным возвращаемым значением не может быть интерпретировано неявно другим приложением, но статус выхода может использоваться для принятия решения о реализации кода.