我本来希望下面的 C# 程序只打印“EOF!” 一旦我在控制台中点击“Ctrl-Z”。相反,程序在我按下 Enter 后立即结束:
var textReader = Console.In;
var sb = new StringBuilder();
while(textReader.Peek() != -1)
{
sb.Append((char)textReader.Read());
}
Console.WriteLine("Entered: '{0}'", sb);
Console.WriteLine("EOF!");
例子:
12345 <= I entered this
Entered: '12345 <= program outputs this
'
EOF!
Press any key to continue . . .
谁能解释上述行为?这根本不是我所期望的。
如何从 Console.In 一次读取超过 1 行的输入?
更新:如下回答:问题是 Peek() 不能依赖。虽然使用 Read() 有效。