实现此逻辑的方法有多种,但此处笔者希望使用Console.ReadKey().Key属性来进行识别。
现贴出正确的代码
while (true)
{
Console.WriteLine("确定转换?");
ConsoleKeyInfo input = Console.ReadKey(true);
Console.WriteLine(input.Key);
StringBuilder output = new StringBuilder();
if ((input.Modifiers & ConsoleModifiers.Alt) == ConsoleModifiers.Alt)//注意此处的操作,采用逻辑"与"
{
output.Append(", together with " + ConsoleModifiers.Alt.ToString());
}
Console.WriteLine(output.ToString());
if (input.Key.Equals(ConsoleKey.Y))
{
break;
}
}
而在这之前却犯了一个愚蠢至极的错误,如下
while (Console.ReadKey().Key == ConsoleKey.Y)
{
break;
}
while (Console.ReadKey().Key != ConsoleKey.Y)
{
break;
}
原因在于while()中的条件不成立时,就不会进入while;当while()中的条件成立时,便会触发break操作,这导致不管输入是怎样的,都会执行到while后面的操作。更惭愧的是,这个错误还花了不少时间来发现,恍然大悟之后,真的是被“蠢哭了”,于此处作下记录,引以为戒。