ConsoleKeyInfo, вопросительный знак и переносимость

У меня есть небольшое консольное приложение на C #, которое считывает ключ и проверяет, был ли ключ вопросительным знаком:

ConsoleKeyInfo ki = System.Console.ReadKey();
if (ki.ConsoleKey.Oem2) // Do something

Я пришел к Oem2 , видя, какое значение фактически присвоено в отладчике, потому что нет кода ConsoleKey для вопросительного знака.

Теперь я, конечно, мог бы использовать ки.KeyChar , но приложение также должно реагировать на определенные клавиши (например, мультимедийные ключи), которые не отображаются на символы. Кажется неэлегантным проверять оба параметра ConsoleKey и KeyChar , чтобы определить, какая клавиша была фактически нажата. С другой стороны, небезопасно полагаться на Oem2 , чтобы всегда отображать на ? во всех обстоятельствах и регионах.

Рекомендуется ли проверять оба свойства, чтобы определить, какая клавиша была фактически нажата?

Приветствуется любое понимание того, почему ConsoleKeyInfo была разработана таким образом.

8
задан Eric J. 23 July 2012 в 17:26
поделиться