C# 在控制台应用程序中输出文本时对按键做出反应

C# 在控制台应用程序中输出文本时对按键做出反应,c#,console,keyboard,C#,Console,Keyboard,我正在为学校的作业写一篇c#文字冒险,我已经遇到了一个问题 我做了一个函数来输入这样的句子: public static void Zin (string zin) { foreach (char c in zin) { Console.Write(c); Thread.Sleep(50); } 现在它可以工作了,但我想实现的是,当玩家按下回车键时,句子会立即在控制台上打印出来 我不知道该

我正在为学校的作业写一篇c#文字冒险,我已经遇到了一个问题

我做了一个函数来输入这样的句子:

public static void Zin (string zin)
    {

        foreach (char c in zin)
        {
            Console.Write(c);
            Thread.Sleep(50);
        }
现在它可以工作了,但我想实现的是,当玩家按下回车键时,句子会立即在控制台上打印出来

我不知道该怎么做。我试着在foreach循环中使用while循环,检查enter是否被点击,然后打印出句子,但这不起作用

提前谢谢

您可以使用该属性确定是否按下了未通过任何
控制台.read*
方法读取的键

按键后,跳过循环中的等待。循环结束后,读取循环过程中按下的所有键,以便在使用
控制台时不会返回这些键。稍后读取*

public static void Zin(string zin)
{
     foreach (char c in zin)
     {
          Console.Write(c);

          // Only wait when no key has been pressed
          if (!Console.KeyAvailable)
          {
               Thread.Sleep(50);
          }
     }

     // When keys have been pressed during our string output, read all of them, so they are not used for the following input
     while (Console.KeyAvailable)
     {
          Console.ReadKey(true);
     }
}

另请参见

首先感谢您的回答!然而,它似乎还不起作用。Console.KeyAvailable函数的具体功能是什么?什么不起作用?我已经在代码中对此进行了测试。答案包含指向Console.KeyAvailable文档的链接。只需点击文本即可进入文档。嗯,在我的代码中,当我按下“回车”键时,什么都不会发生。控制台一直在逐字逐句地写句子你是从我的答案中复制了Zin()方法1到1还是修改了什么?你确定代码是在进行更改后编译的吗?哦,等等,我把while循环放在foreach循环中,这显然不起作用;)谢谢你,伙计!我也明白你做了什么!