Console.ReadLine被跳过了。

5

当我使用mono filename.exe运行已经通过gmcs filename.cs编译的代码时,C#中的Console.ReadLine()命令被简单地忽略了。可能会发生什么?甚至当我尝试运行下面的简单代码时,它也会直接跳过到最后,好像没有运行任何内容。

static void Main(string[] args) {
    string value = Console.ReadLine();
    Console.WriteLine("You entered: {0}", value);
    Console.WriteLine("Press ENTER to continue...");
    Console.ReadLine();   // Returns immediately.
    Console.WriteLine("Continuing....");
}

你是在使用Mono Develop运行这个程序吗? - JaredPar
你是将它创建为控制台应用程序,对吗?而不是作为Windows窗体或WPF应用程序? - Jim Mischel
我使用TextWrangler创建了它,并在Mac上使用控制台编译了它。 - user2142733
1
这只是一种猜测,但是否可能是Windows和OS X使用不同的换行符所导致的问题?Windows使用“CR + LF”,而OS X使用“LF”。键盘是否正在发送“CR + LF”,并且每个“ReadLine”命令都将“CR”和“LF”作为单独的新行读取?如果添加第三个“Console.ReadLine()”,或者更好的方法是写入循环的“Console.ReadKey()”的结果,会发生什么? - Hand-E-Food
2个回答

0

我猜这就是你的问题。

C# 为什么它跳过了我的console.readline()?

我在自己的代码中也遇到过这个问题,但是想不起来解决方案了。基本上,你让用户按回车键,这会发送回车和换行符,导致readline被触发。你能否使用Read..Key(someCharacter)代替呢?


这似乎并不是相同的情况。链接问题中的代码同时使用了 ReadReadLine - Brian Rasmussen

0

这很不可能,但是黏着的回车键可能会导致此问题。通过您的描述方式,运行时尊重您的第一个 Console.ReadLine();,但忽略第二个?如果是这样,并且您正在使用旧键盘,那么也许回车键不能像您希望的那样迅速返回到“未按下”的状态。这将导致您所看到的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接