刚刚遇到了下面描述的问题。如果“Console.TreatControlCAsInput = true;”,则必须在ReadLine()上按[enter]两次。
我在下面写了一些演示代码。我猜测这段代码演示了.NET 4框架中的错误,这是正确的吗?
Console.Write("Test 1: Console.TreatControlCAsInput = false\nType \"hello\": ");
{
string readline = Console.ReadLine(); // type "hello" [enter].
Console.WriteLine("You typed: {0}", readline);
// Prints "hello".
}
Console.Write("Test 2: Console.TreatControlCAsInput = true\nType \"hello\": ");
Console.TreatControlCAsInput = true;
{
string readline = Console.ReadLine(); // type "hello" [enter].
Console.WriteLine("You typed: {0}", readline);
// Should print "hello" - but instead, you have to press [enter]
// *twice* to complete the ReadLine() command, and it adds a "\r"
// rather than a "\n" to the output (so it overwrites the original line)
}
// This bug is a fatal error, because it makes all ReadLine() commands unusable.
Console.Write("[any key to exit]");
Console.ReadKey();
答案 0 :(得分:14)
它是带有Windows控制台子系统的known issue,并且已于2006年在Microsoft Connect上报告过。
Microsoft于2007年5月22日12:37发表
Hello ARos,感谢您在System.Console中报告此问题。该 正如所示,Windows控制台子系统存在行为 附带的Win32 C应用程序。我已将此问题报告给了 Windows控制台子系统所有者。
谢谢,乔希
答案 1 :(得分:3)
不是框架上的错误,但它看起来像Windows console subsystem中的错误。