СвойствоKeyCharсодержит эквивалентcharвведенного с клавиатуры символа, свойствоKey— значение из перечисленияConsoleKeyвсех клавиш на клавиатуре, а свойствоModifiers— описание одной из модифицирующих клавиш (
Главное преимущество методаReadKey заключается в том, что он предоставляет средства для организации ввода с клавиатуры в диалоговом режиме, поскольку этот ввод не буферизуется построчно. Для того чтобы продемонстрировать данный метод в действии, ниже приведен соответствующий пример программы.
// Считать символы, введенные с консоли, используя метод ReadKey.
using System;
class ReadKeys {
static void Main {
ConsoleKeylnfo keypress;
Console.WriteLine("Введите несколько символов, " +
"а по окончании - .");
do {
keypress = Console.ReadKey; // считать данные о нажатых клавишах Console.WriteLine(" Вы нажали клавишу: " + keypress.KeyChar);
// Проверить нажатие модифицирующих клавиш.
if((ConsoleModifiers.Alt & keypress.Modifiers) != 0)
Console.WriteLine("Нажата клавиша
Console.WriteLine("Нажата клавиша
Console.WriteLine("Нажата клавиша
} while(keypress.KeyChar != ' Q');
}
}
Вот, например, к какому результату может привести выполнение этой программы.
Введите несколько символов, а по окончании - .
а Вы нажали клавишу: а
b Вы нажали клавишу: b
d Вы нажали клавишу: d
А Вы нажали клавишу: А
Нажата клавиша
В Вы нажали клавишу: В
Нажата клавиша
С Вы нажали клавишу: С
Нажата клавиша
• Вы нажали клавишу: •
Нажата клавиша
Q Вы нажали клавишу: Q
Нажата клавиша
/
Как следует из приведенного выше результата, всякий раз, когда нажимается клавиша, методReadKey немедленно возвращает введенный с клавиатуры символ.*Этим он отличается от упоминавшегося ранее методаRead , в котором ввод выполняется с построчной буферизацией. Поэтому если требуется добиться в программе реакции на ввод с клавиатуры, то рекомендуется выбрать методReadKey .
Запись данных в поток вывода на консоль