C# 如何在if语句中使用Console.ReadLine()?

C# 如何在if语句中使用Console.ReadLine()?,c#,console,C#,Console,我正在尝试创建一个方法,自动接收文本输入并延迟一定的时间,但如果按下一个键,它只会立即写入文本 我知道这个错误,以及它发生的原因 main.cs(83,15):错误CS0029:无法将类型“string”隐式转换为“bool” 但我似乎不知道该怎么做 有什么想法吗?Console.ReadLine()返回一个字符串。 If语句检查布尔值 如果要在If语句中使用Console.ReadLine() 您需要检查if语句中是否相等 比如说 static void DelayText(string te

我正在尝试创建一个方法,自动接收文本输入并延迟一定的时间,但如果按下一个键,它只会立即写入文本

我知道这个错误,以及它发生的原因

main.cs(83,15):错误CS0029:无法将类型“string”隐式转换为“bool”

但我似乎不知道该怎么做

有什么想法吗?

Console.ReadLine()返回一个字符串。 If语句检查布尔值

如果要在If语句中使用Console.ReadLine()

您需要检查if语句中是否相等

比如说

static void DelayText(string text, int delay = 1000) {
    if (Console.ReadLine()) {
            Console.WriteLine(text);
        }
        else {
            System.Threading.Thread.Sleep(delay);
            Console.WriteLine(text);
        }
    }
如果输入的字符串是John Smith,则满足条件,If语句将起作用

如果该字符串是任何其他字符串,例如
“Mark Owen”
,则将执行else语句


即使您输入了
“JOHN SMITH”
,else语句也会被执行。

您将在下面找到优化的代码

if(Console.ReadLine() == "John Smith") //this returns true if the string that was inputted is John Smith

“这会自动接收文本输入并延迟一定的时间,但如果按下一个键,它只会立即写入文本。”-uhm。。什么?你能不能更准确地描述一下你想发生什么?我想我已经足够准确了。它接收文本,并在延迟后打印出来。如果按下一个键,文本会立即打印出来。没什么要详细说明的了。我想要求是明确的。OP希望停止执行,直到按键或延迟时间结束。在这两种情况下,文本都应写入控制台。由于控制台应用程序没有真正的按键事件,我不知道一个简单的解决方案,它也包括延迟时间。
static void DelayText(string text, int delay = 1000)
{
   if (string.IsNullOrEmpty(Console.ReadLine()))
       System.Threading.Thread.Sleep(delay);
   Console.WriteLine(text);
}