c#中readkey的用法是怎么样的

c#中readkey,输入a,得到的为什么是A,输入8为什么得到的是D8

readkey得到的是键盘代码。键盘代码是一个枚举,比如说,D8代表数字区的8,A表示字母区的A。
无论是a和A,你按下的都是A这个键,所以一样。
你要读取字符用ReadChar

你要读取字符用Console.Read()

https://msdn.microsoft.com/zh-cn/library/471w8d85.aspx

https://msdn.microsoft.com/zh-cn/library/system.consolekeyinfo.aspx

你可以写
var key = Console.ReadKey();
if ((key.Modifiers & ConsoleModifiers.Control) != 0)
Console.WriteLine("你按下了ctrl");

         /// <summary>
        /// Read password from console
        /// </summary>
        /// <returns>password</returns>
        public static string ReadPassword()
        {
            char[] revisekeys = new char[3];
            revisekeys[0] = (char)0x08;
            revisekeys[1] = (char)0x20;
            revisekeys[2] = (char)0x08;

            StringBuilder sb = new StringBuilder();
            while (true)
            {
                ConsoleKeyInfo kinfo = Console.ReadKey(true);

                if (kinfo.Key == ConsoleKey.Enter)
                {
                    break;
                }

                if (kinfo.Key == ConsoleKey.Backspace)
                {
                    if (sb.Length != 0)
                    {
                        int rIndex = sb.Length-1;
                        sb.Remove(rIndex, 1);
                        Console.Write(revisekeys);
                    }
                    continue;
                }
                sb.Append(Convert.ToString(kinfo.KeyChar));
                Console.Write("*");
            }
            return sb.ToString();
        }

搞定了,谢啦,但是那个revisekeys的char数组是干嘛用的