mam trochę C# aplikacji konsoli, która odczytuje klucz i sprawdza, czy klucz był znak zapytania:ConsoleKeyInfo pytanie Mark i Przenośność
ConsoleKeyInfo ki = System.Console.ReadKey();
if (ki.ConsoleKey.Oem2) // Do something
I przybył Oem2
widząc jaka wartość jest rzeczywiście przypisane w debugerze, ponieważ nie istnieje ConsoleKey code dla znaku zapytania.
Teraz mogę oczywiście użyć ki.KeyChar
, ale aplikacja musi również reagować na pewne klucze (np. Klucze multimedialne), które nie są mapowane na znaki. Czuł się nieelegancko, aby sprawdzić, który z klawiszy został naciśnięty, i zarówno ConsoleKey
jak i KeyChar
. Z drugiej strony nie jest bezpiecznie polegać na Oem2
, aby zawsze mapować na ?
we wszystkich okolicznościach i regionach.
Czy najlepiej sprawdzać obie właściwości, aby określić, który klawisz został naciśnięty?
Dowiemy się, dlaczego ConsoleKeyInfo zostało zaprojektowane w ten sposób.