为什么控制台窗口立即closures而不显示输出?
我已经决定学习一些基本的C#(虽然我有编程经验),但是我正在遵循MSDN中的指南,但是这里的问题是他们的Hello World程序出现了,那么它会马上closures。 这是为什么?
using System; public class Hello1 { public static int Main() { Console.WriteLine("Hello, World!"); return 0; } }
这里的问题是他们的Hello World程序正在显示,然后马上closures。
这是为什么?
因为它已经完成了。 当控制台应用程序完成执行并从main
方法返回时,关联的控制台窗口将自动closures。 这是预期的行为。
如果您想保持打开以进行debugging,则需要指示计算机在结束应用程序并closures窗口之前等待按键。
Console.ReadLine
方法是这样做的一种方法。 将此行添加到代码的末尾(就在return
语句之前)将导致应用程序等待您在退出之前按下某个键。
或者,您可以从Visual Studio环境中按Ctrl + F5来启动应用程序,而不需要附加debugging器,但是这样做有一个明显的缺点,就是无法使用debuggingfunction,这在编写应用程序时可能需要您随时使用。
最好的折衷办法是,只有在debugging应用程序时,才能调用Console.ReadLine
方法,方法是将其封装在预处理器指令中。 就像是:
#if DEBUG Console.WriteLine("Press enter to close..."); Console.ReadLine(); #endif
而不是使用
Console.Readline() Console.Read() Console.ReadKey()
您可以使用Ctrl + F5 (如果您在Visual Studio中)运行程序。 然后Visual Studio将保持控制台窗口打开,直到您按下一个键。
注意:你不能用这种方法debugging你的代码。
这对于Ctrl F5或F5来说是相同的。 Main
方法结束之前立即放置。
using System.Diagnostics; private static void Main(string[] args) { DoWork(); if (Debugger.IsAttached) { Console.WriteLine("Press any key to continue . . ."); Console.ReadLine(); } }
程序立即closures,因为没有任何东西阻止它closures。 在return 0;
处插入断点 或者添加Console.Read();
在return 0;
之前return 0;
防止程序closures。
另一种方法是在从Main方法返回之前使用Debugger.Break()
代码完成后,继续你需要添加这个:
Console.ReadLine();
要么
Console.Read();
使用Console.Read(); 防止程序closures,但要确保你添加了Console.Read();
返回语句之前的代码,否则将是一个无法访问的代码。
Console.Read(); return 0;
检查这个Console.Read
或者,您可以使用以下代码延迟closures:
System.Threading.Thread.Sleep(1000);
注意Sleep
使用毫秒。
添加Read
方法以显示输出。
Console.WriteLine("Hello, World!"); Console.Read(); return 0;
我假设你不希望它在debugging模式下closures的原因,是因为你想看看variables的值等等。所以最好在主函数的closures“}”处插入一个断点。 如果你不需要debugging,那么Ctrl-F5是最好的select。
程序在执行完成后立即closures。 在这种情况下,当你return 0;
。 这是预期的function。 如果你想看到输出,那么要么手动在terminal上运行它,要么在程序结束时设置一个等待,以便它保持打开几秒钟(使用线程库)。
在返回0之前添加以下内容:
system("PAUSE");
这会打印一行来打一个键来closures窗口。 它将保持窗口,直到你按Enter键。 我有我的学生将其添加到他们的所有程序。
如果你的程序要求你按Enter键继续,就像你必须input一个值并继续,然后在retunr(0)之前添加一个新的double或int并写入write。 scanf_s(“%lf”,&variables);
我总是将以下语句添加到控制台应用程序中(如果需要,可以为此创build一个代码片段)
Console.WriteLine("Press any key to quit!"); Console.ReadKey();
这样做有助于您通过控制台应用程序尝试不同的概念。
Ctr + F5将使控制台停留,但你不能debugging! 我在现实世界中编写的所有控制台应用程序始终是非交互式的,并且由诸如TWS或CA Work Station等计划程序触发,不需要这样的事情。
为了简化别人的说法:使用Console.ReadKey();
。
这使得程序正在等待用户按下键盘上的普通键
来源:我在我的程序中用于控制台应用程序。
这很简单,只需使用这个Console.ReadLine();
或Console.Read();
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OOP_Encapsulation { public class Program { static void Main(string[] args) { Console.Write("Hi man"); Console.ReadLine(); return 0 } } }
根据我的担心,如果要稳定CONSOLE APPLICATION OUTPUT,直到输出显示USEclosures,标签:MainMethod和goto标签后; 在节目结束之前
在程序中。
例如:
static void Main(string[] args) { label: ---------- *****snippet of code***** ----------- **goto label;** }