使用带有退出代码的 Environment.Exit 与从 Main 返回 int

问题描述 投票:0回答:3

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

从main方法返回一个int值

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

(或)

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

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

使用上述任何一种方法从可执行文件返回值可以吗?或者其中一个比其他更受青睐?

c# exit-code
3个回答
19
投票

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

您的线索是:异常是发出异常情况信号的好方法,异常情况应使用不为零的 ExitCode 终止程序。 事实上,它会自动设置为异常的 HResult 属性值。 无需代码。


7
投票

如果您正在编写线性程序,那么从

Main
返回就可以了。 如果您有更复杂的逻辑,或者可能有其他执行线程,那么您可能需要使用
Exit(returnCode)
。 这两种方式都相当于你的 shell 脚本。


1
投票

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

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

你也可以这样看:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.