首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的Console.ReadKey(false)有点可疑

C#中的Console.ReadKey(false)有点可疑
EN

Stack Overflow用户
提问于 2011-09-12 00:03:54
回答 5查看 2.6K关注 0票数 1

我正在尝试用C#创建一个简单的应用程序,其中我键入的每个字符都显示在控制台窗口中。下面是我的代码:

代码语言:javascript
复制
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‘。有什么解决方案吗?谢谢你的提醒!

EN

回答 5

Stack Overflow用户

发布于 2011-09-12 00:10:08

您看到的内容如下:

不返回您输入的原始字符,因为您向ReadKey

  • The字符串"System.ConsoleKeyInfo“的前几个字符传递了false
  • ,因为ToString()方法返回的是typename (此处),而不是输入的字符。

请改用以下代码来实现您尝试的结果:

代码语言:javascript
复制
while(true)
{
    ConsoleKeyInfo info = Console.ReadKey(true);
    Console.WriteLine(info.KeyChar);
}
票数 4
EN

Stack Overflow用户

发布于 2011-09-12 00:08:46

因为input.ToString() == "System.ConsoleKeyInfo" :-)根据您想要做的事情,尝试编写input.KeyChar

票数 3
EN

Stack Overflow用户

发布于 2011-09-12 00:14:06

Console.ReadKey(false);的参数定义您键入的密钥是否被截获。因此,Console.ReadKey(false);打印您键入的字符,而Console.Writeline(c)打印S

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7379458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档