14

我打算在我的一个 shell 脚本中使用 C# 可执行文件的返回码。我有两个选择:

从 main 方法返回一个 int 值

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

(或者)

使用带有退出代码的 Environment.Exit

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

使用上述任何一种方法从可执行文件返回值是否可以?还是其中一个优先于其他?

4

3 回答 3

17

Environment.Exit() 是粗鲁的中止。它立即终止该过程。仅当您检测到严重故障时才使用它,例如,它适用于 AppDomain.UnhandledException 事件处理程序。当您的程序由于未处理的异常而即将终止时运行。

这是你的领导:异常是发出异常情况的一种好方法,应该以非零的 ExitCode 终止程序。事实上,它会自动设置为异常的 HResult 属性值。无需代码。

于 2011-03-09T23:19:49.317 回答
7

如果你正在编写一个线性程序,那么从那里返回Main就可以了。如果您有更复杂的逻辑,或者可能有其他执行线程,那么您可能想要使用Exit(returnCode). 这两种方式都将等同于您的 shell 脚本。

于 2011-03-09T22:41:06.767 回答
1

不同之处在于您需要根据另一个应用程序的退出状态来处理父应用程序上的事件。Return 主要用于应用程序内,而 exit 用于突然结束应用程序。另一个应用程序可以使用此处的退出状态来决定其下一步。

当您将值返回到调用代码的另一个函数时,使用返回。或指示某个事件的代码执行结束。

你也可以这样看:

1) return 结束一个函数,可以是 main();退出用于结束程序。

2)以某个返回值结束程序确实不能被另一个应用程序隐式解释,但退出状态可用于决定代码实现。

于 2013-02-06T08:00:49.920 回答