c#控制台键字符串的问题

本文关键字:问题 字符串 控制台 | 更新日期: 2023-09-27 17:51:26

我对这段代码有一个问题,这段代码应该只是写我输入的内容。

ConsoleKeyInfo a = Console.ReadKey();
if (a.Key == ConsoleKey.Spacebar)
{
     Console.Write(" ");
}
else if (a.Key == ConsoleKey.Enter) 
{
     Console.WriteLine("");
}
else
{
     string b = a.Key.ToString();
     Console.Write(b);
}

如果我点击d,例如,它打印:dD

但是如果我检查b.Length,它等于1。如果我尝试print b[0],它仍然打印dD。这怎么可能呢?我该怎么补救呢?

c#控制台键字符串的问题

ReadKey方法读取键并将其显示给用户。因此,当您点击"d"时,它显示"d",返回ConsoleKeyInfo值,然后您的代码显示"d"。这将导致"dD"显示。

true传递给ReadKey以阻止显示

ConsoleInfo a = Console.ReadKey(true);

不是打印dD,而是打印D,即a.Key.ToString()的值。它把它放在d之后,所以在控制台中它看起来像dD