正确的退出控制台应用程序的方法

6
我已经阅读了这里这里与我是否应该在我的控制台应用程序中使用Enviorment.Exit()仍然感到困惑。
如果用户在提示符处键入退出,则在方法中,我有以下代码:
if(userSelect == "exit")
{
    Environment.Exit(0);
}

更新:
class Program
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Welcome to my Console App");
        Console.WriteLine();
        consoleManager();
    }


    public static void consoleManager()
    {
        string consolePrompt = "ConsoleApp\">";

        string whichMethod = "";
        Console.Write(consolePrompt);
        whichMethod = Console.ReadLine();

        if(whichMethod == "view enties")
        {
            viewEntry();
        }
        else
            if(whichMethod == "Add Entry")
            {
                addEntry();
            }
            else
                if(whichMethod == "exit")
                {
                    //what to do here
                }
                else
                {
                    help();
                }
    }

1
我认为你第二个链接中被接受的答案已经说得很清楚了。 - Rhumborl
请注意,在应用程序中除了 main 方法之外的任何地方退出都是不寻常的。如果您在 main 方法中,一个简单的 return 0; 语句就足够并且更可取。 - Cody Gray
@CodyGray - 我更新了我的代码,你能告诉我如何从我的方法中正确退出我的应用程序吗? - user5910494
您现在删除了代码,我不确定原因。有两种可能性:(1)将该代码移入main方法中(没有理由放在自己的函数中),(2)将该函数更改为返回值 - 要么是false以关闭,要么是与主函数中的返回值相对应的int。在主方法内检查该函数的结果并相应返回。 - Cody Gray
Environment.Exit 并不是无法使用(虽然在多线程应用程序中它的效果不佳,但您并没有编写这样的应用程序),只是一个良好设计的应用程序通常不需要使用它。只有一种情况下使用它才有意义,那就是在某种菜单中,用户可以选择退出,并且可以合理地编写以从主函数返回。 - Cody Gray
显示剩余2条评论
1个回答

7

请查阅MSDN文档-Environment.Exit,其中解释了参数。

exitCode参数,使用非零数字表示错误。在您的应用程序中,您可以在枚举中定义自己的错误代码,并根据情况返回适当的错误代码。例如,返回值为1表示所需文件不存在,返回值为2表示文件格式不正确。

因此,如果您说Exit(0),则表示您的进程成功退出而没有任何错误。如果您使用任何System Error Code,则会通知操作系统出现了什么问题。在您的情况下,Environment.Exit(0)就足够了。

编辑 我很确定,您正在过度思考。需要考虑的要点-

  1. 如果你是从Main方法退出,一个简单的return语句就足够了。
  2. 否则使用Enviorment.Exit(),因为return语句会将你返回到Main方法,程序仍然会继续运行。
  3. 我希望你熟悉void Main(string[] args)和int Main(string[] args)。它们之间的区别在于返回值。你可以使用它来返回错误代码,0表示成功,其他数字表示各种错误。你也可以使用上面链接的系统错误代码。
  4. 归根结底,这取决于调用你的控制台程序的应用程序是否使用返回值。如果是在dos提示符下运行,则会被忽略。如果某个外部应用程序正在运行你的控制台程序,则可能会处理你的输出。

如果它足够好,那么为什么Cody Gray说这很不寻常?有什么不寻常的地方? - user5910494

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接