Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Console.ReadKey()时不擦除退格_C#_Console Application - Fatal编程技术网

C# 使用Console.ReadKey()时不擦除退格

C# 使用Console.ReadKey()时不擦除退格,c#,console-application,C#,Console Application,我有一个简单的代码: static void Main(string[] args) { while (!System.Console.KeyAvailable) { var key = System.Console.ReadKey(false); } } 当用户按Backspace时,光标只是向后移动,但不会删除最后一个字符 我读到一些人只是检查输入是否为Backspace并调用控制台。写入(“\

我有一个简单的代码:

    static void Main(string[] args)
    {
        while (!System.Console.KeyAvailable)
        {
            var key = System.Console.ReadKey(false);
        }
    }
当用户按Backspace时,光标只是向后移动,但不会删除最后一个字符

我读到一些人只是检查输入是否为Backspace并调用控制台。写入(“\b”)以擦除,但我不知道这是否是解决问题的最佳方法

如果我使用
Console.read()
Console.ReadLine()
读取输入,则按Backspace时字符将被删除

当使用
ReadKey()
时,为什么退格键会改变其行为?

当您使用
ReadKey()
时,您告诉.NET您想要原始输入,并且它不会对其进行任何处理。您甚至可以告诉.NET不要将键回显到屏幕上(通过方法的参数)

如果您使用
Read()
ReadLine()
,则您会告诉.NET您想要通过控制台逻辑获得的输入,其中包括控制台对输入施加自己的行为,例如按下退格键时擦除字符


两种不同的获取输入的方法,两种不同的结果。

当您按下
Enter
时会发生相同的情况-光标位置会更改为
0
,但不会移动到下一行。是的,但为什么?有办法解决这个问题吗?但为什么在我使用ReadKey()时会出现这种情况呢@如果我不使用它,它就会erases@PeterDuniho我把问题改成了有意义的…@PeterDuniho-thks,这就是我想要理解的。。。你能回答这个问题吗?