У меня есть небольшое консольное приложение на C #, которое считывает ключ и проверяет, был ли ключ вопросительным знаком:
ConsoleKeyInfo ki = System.Console.ReadKey();
if (ki.ConsoleKey.Oem2) // Do something
Я пришел к Oem2
, видя, какое значение фактически присвоено в отладчике, потому что нет кода ConsoleKey для вопросительного знака.
Теперь я, конечно, мог бы использовать ки.KeyChar
, но приложение также должно реагировать на определенные клавиши (например, мультимедийные ключи), которые не отображаются на символы. Кажется неэлегантным проверять оба параметра ConsoleKey
и KeyChar
, чтобы определить, какая клавиша была фактически нажата. С другой стороны, небезопасно полагаться на Oem2
, чтобы всегда отображать на ?
во всех обстоятельствах и регионах.
Рекомендуется ли проверять оба свойства, чтобы определить, какая клавиша была фактически нажата?
Приветствуется любое понимание того, почему ConsoleKeyInfo была разработана таким образом.