【问题标题】:Console.ReadLine is skippedConsole.ReadLine 被跳过
【发布时间】:2013-03-04 22:06:40
【问题描述】:

当我在使用gmcs filename.cs 编译后使用mono filename.exe 运行我的代码时,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 运行这个吗?
  • 您将其创建为控制台应用程序,对吧?不是作为 Windows 窗体或 WPF 应用程序?
  • 我使用 textWrangler 创建它并使用 mac 上的控制台编译它。
  • 这是在黑暗中刺伤,但 Windows 和 OS X 有不同的换行符会不会是个问题? Windows 使用CR+LF,OS X 使用LF。键盘是否可以发送CR+LF 并且每个ReadLine 命令都将CRLF 作为单独的新行读取?如果添加第三个Console.ReadLine() 会发生什么,或者如果您编写循环的Console.ReadKey() 的结果会更好?

标签: c# readline


【解决方案1】:

这不太可能,但粘性返回键可能会导致此问题。顺便说一句,运行时尊重您的第一个Console.ReadLine();,但忽略第二个?如果是这样,并且您使用的是较旧的键盘,则返回键可能不会像您希望的那样快速返回到“未按下”状态。这会导致您看到的问题。

【讨论】:

    【解决方案2】:

    我猜这是你的问题。

    C# why is it skipping my console.readline()?

    我以前在自己的东西中看到过这种情况,但不记得解决方案了。基本上,您让用户按下发送回车和换行符的回车,从而触发 readline。你能用 Read..Key(someCharacter);

    【讨论】:

    • 这似乎不是同样的情况。链接问题中的代码同时使用了ReadReadLine
    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2015-08-23
    相关资源
    最近更新 更多