C# 控制台暂停方式 因为我是C语言的新手,我搜索了谷歌,我用C++来做各种事情。其中之一是控制台应用程序中的暂停可能性

C# 控制台暂停方式 因为我是C语言的新手,我搜索了谷歌,我用C++来做各种事情。其中之一是控制台应用程序中的暂停可能性,c#,console,C#,Console,很多人提出了不同的建议,比如 System.Console.ReadKey(true); System.Console.WriteLine(); 其他人甚至展示了“应该”比其他人更高效的自制功能。 决定哪一个是更好的解决方案真是一件令人头疼的事 有谁能举例说明C如何解释它们以及哪种方式最有效?我通常使用do和while暂停控制台。然后,如有必要,如果按特定键,控制台应恢复 示例 do { /* while (!Console.KeyAvailable) //Continue if pres

很多人提出了不同的建议,比如

System.Console.ReadKey(true);
System.Console.WriteLine();
其他人甚至展示了“应该”比其他人更高效的自制功能。 决定哪一个是更好的解决方案真是一件令人头疼的事


有谁能举例说明C如何解释它们以及哪种方式最有效?

我通常使用
do
while
暂停控制台。然后,如有必要,如果按特定键,控制台应恢复

示例

do
{

/*  while (!Console.KeyAvailable) //Continue if pressing a Key press is not available in the input stream
    {
        //Do Something While Paused
    } 
*/

} while (Console.ReadKey(true).Key != ConsoleKey.Escape); //Resume if Escape was pressed
do
{
    //break; //Resume
} while (true); //Continue while True (Always True)
如果将其保留为
//暂停时执行某些操作
,则只有在暂停时按下Esc键不执行任何操作时,控制台才会恢复

但是,如果您不希望控制台应用程序恢复,可以使用
while(true)而不是
while(Console.ReadKey(true.Key!=ConsoleKey.Escape)

示例

do
{

/*  while (!Console.KeyAvailable) //Continue if pressing a Key press is not available in the input stream
    {
        //Do Something While Paused
    } 
*/

} while (Console.ReadKey(true).Key != ConsoleKey.Escape); //Resume if Escape was pressed
do
{
    //break; //Resume
} while (true); //Continue while True (Always True)
注意:控制台应用程序将暂停,因为执行
do{}while(条件)您只是告诉控制台应用程序您正在做一些事情。因此,控制台应用程序将等待操作执行。然后,通常在无事可做时关闭。

注意:while
用于循环。因此,除非条件变为false,否则应用程序不会关闭

谢谢,

我希望这对您有所帮助:)

如果您谈论的是内置的“暂停”命令,您可以随时调用它——即使它很难看。 以下是我使用的:

static void Pause()
{
    Console.WriteLine();
    var pauseProc = Process.Start(
        new ProcessStartInfo()
            {
                FileName = "cmd",
                Arguments = "/C pause",
                UseShellExecute = false
            });
    pauseProc.WaitForExit();
}
通常是这样的:

if (Environment.UserInteractive())
    Pause();

希望这对你有所帮助。

或者你可以用Pat所做的,但用于争论而不是

Arguments = "/C pause"
你可以用

Arguments = "/C TIMEOUT /t 4 /nobreak > NUL"
其中数字4是控制台在执行其余程序之前暂停的秒数

整个功能将是

static void Pause(int sec)
    {
        Console.WriteLine();
        var pauseProc = Process.Start(
            new ProcessStartInfo()
            {
                FileName = "cmd",
                Arguments = "/C TIMEOUT /t " + sec + " /nobreak > NUL",
                UseShellExecute = false
            });
        pauseProc.WaitForExit();
    }
您将使用暂停功能调用它,暂停的秒数为

Pause(4);

希望有帮助。

您也可以为pupose编写“Console.ReadLine();”。

使用以下任何方法运行程序:

  • ctrl+F5
  • 或者像拉杰什建议的那样

  • Console.ReadKey()//暂停任何键

  • Console.ReadLine()//暂停输入键


  • 如果我可以问的话-为什么暂停应该是有效的!?我知道在小型应用程序中,它不会有很大的不同,但从理论上思考,哪一个更好。你为什么要暂停它是你应该问自己的第一个问题。家庭作业,需要在计算结束后打印出一些东西,如果不暂停它,就无法做到这一点,对吗?@RnD:这个练习毫无意义。从理论上讲,永远不会有需要有效暂停的情况,即使在某些情况下,你最好花时间思考真正的问题。这是一个微观优化和过早优化的例子,两者都是不好的。这已经在本手册中介绍过了。如果你发现一个答案很有帮助,那么当你获得了这个特权时,你应该这样做。ctrl+F5成功了!