// TreatControlCAsInput需要配合按键。该属性会导致Console.ReadLine()异常。 // 参考:https://docs.microsoft.com/zh-cn/dotnet/api/system.console.readkey?view=net-6.0 // Prevent example from ending if CTL+C is pressed. // Ctrl+C视为普通按键,不会杀死控制台。 Console.TreatControlCAsInput = true; ConsoleKeyInfo cki; Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key."); Console.WriteLine("Press the Escape (Esc) key to quit: \n"); do { cki = Console.ReadKey(intercept: true); //读取输入。默认intercept为false,表示按下的按键会被打印到控制台。 Console.Write(" --- You pressed "); // 这里的"&"在非bool的情况下是位运算符。 if ((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+"); if ((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+"); if ((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+"); Console.WriteLine(cki.Key.ToString()); } while (cki.Key != ConsoleKey.Escape);