我正在尝试在C#中创建一个简单的应用程序,其中我键入的每个字符都显示在控制台窗口中。这是我的代码:
class Program {
static void Main(string[] args) {
while (true) {
System.ConsoleKeyInfo input;
input = Console.ReadKey(false);
String d = input.ToString();
char c = d[0];
Console.WriteLine(c);
}
}
}
问题是角色没有正确显示,更准确地说,每个角色后跟一个'S'。例如,我键入'a',然后我得到'aS'而不是'a'。有解决方案吗Thnx提前!
答案 0 :(得分:4)
您所看到的是以下内容:
false
而不是true
传递给ReadKey
ToString()
方法返回的是typename(此处),而不是输入的字符。使用以下代码来实现您的目标:
while(true)
{
ConsoleKeyInfo info = Console.ReadKey(true);
Console.WriteLine(info.KeyChar);
}
答案 1 :(得分:3)
因为input.ToString() == "System.ConsoleKeyInfo"
:-)
根据您的要求,尝试编写input.KeyChar
。
答案 2 :(得分:1)
Console.ReadKey(false);
的参数定义您键入的密钥是否被截获。因此Console.ReadKey(false);
会打印您输入的字符,而Console.Writeline(c)
会打印S
。
答案 3 :(得分:0)
请尝试char c = input.KeyChar;
。
答案 4 :(得分:0)
问题是您在ToString()
上使用System.ConsoleKeyInfo
。当它变为字符串时,您将获得"System.ConsoleKeyInfo"
,因此第一个字符为'S'
。您的意思是编写以下代码吗?
while (true)
{
var input = Console.ReadKey(false);
Console.WriteLine(input.KeyChar);
}
使用该代码,每个角色都会重复(因此您将获得aabbccddee
)。将false
更改为true
中的ReadKey
以解决此问题。