我正在按照MSDN中的指南学习C#.

现在,我刚刚try 了Example 1(hereMSDN的链接),我遇到了一个问题:为什么控制台窗口在显示我的输出后立即关闭?

using System;

public class Hello1
{
    public static int Main()
    {
        Console.WriteLine("Hello, World!");
        return 0;
    }
}

推荐答案

这里的问题是,他们的Hello World计划正在显示,然后它将立即关闭.
为什么会这样呢?

Because it's finished.当控制台应用程序完成执行并从其main方法返回时,关联的控制台窗口自动关闭.这是预期的行为.

如果您希望出于调试目的而使其保持打开状态,则需要指示计算机在结束应用程序并关闭窗口之前等待按键.

Console.ReadLine method是做到这一点的一种方式.将此行添加到代码末尾(恰好在return语句之前)将导致应用程序在退出前等待您按下某个键.

或者,您可以在Visual Studio环境中通过按[kbd>Ctrl+F5来启动应用程序,但这有一个明显的缺点,即阻止您使用调试功能,编写应用程序时可能需要这些功能.

最好的折衷办法可能是仅在调试应用程序时调用Console.ReadLine方法,方法是将其包装在预处理器指令中.比如:

#if DEBUG
    Console.WriteLine("Press enter to close...");
    Console.ReadLine();
#endif

如果抛出了未捕获的异常,您可能还希望窗口保持打开状态.要做到这一点,你可以把Console.ReadLine();放在finally块中:

#if DEBUG
    try
    {
        //...
    }
    finally
    {
        Console.WriteLine("Press enter to close...");
        Console.ReadLine();
    }
#endif

.net相关问答推荐

将Visual Studio更新到v17.9.3后,IDE关闭,dotnet.exe命令报告致命错误.内部CLR错误.(0x80131506)

我的Azure应用服务从哪里获取应用设置?

通过 System.Net.Mail 的 VB SMTP 停止工作

标签从右向左增长

为什么递归调用会导致不同堆栈深度的 StackOverflow?

LINQ 性能常见问题解答

.NET 反射的成本是多少?

在 .NET 中填充整数列表

非通用 TaskCompletionSource 或替代

C#中的引用类型

为什么 C# 不推断我的泛型类型?

Find() 和 First() 抛出异常,如何改为返回 null?

CI服务器的比较?

让 String.Replace 只打整个单词的方法

功能说明

具有不同身份验证标头的 HttpClient 单个实例

从字节数组中读取 C# 中的 C/C++ 数据 struct

从 Visual Studio 2015 发布 - 允许不受信任的证书

检测到包降级警告(dotnet core,vs 2017)

什么时候使用 Tuple 和 KeyValuePair 比较好?