Метод Read()
возвращает очередной символ, считанный с консоли. Он ожидает до тех пор, пока пользователь не нажмет клавишу, а затем возвращает результат. Возвращаемый символ относится к типу int
и поэтому должен быть приведен к типу char
. Если при вводе возникает ошибка, то метод Read()
возвращает значение -1. Этот метод сгенерирует исключение IOException
при неудачном исходе операции ввода. Ввод с консоли с помощью метода Read()
буферизуется построчно, поэтому пользователь должен нажать клавишу
Ниже приведен пример программы, в которой метод Read()
используется для считывания символа, введенного с клавиатуры.
// Считать символ, введенный с клавиатуры.
using System;
class KbIn {
static void Main() {
char ch;
Console.Write("Нажмите клавишу, а затем —
ch = (char) Console.Read(); // получить значение типа char
Console.WriteLine("Вы нажали клавишу: " + ch) ;
}
}
Вот, например, к какому результату может привести выполнение этой программы.
Нажмите клавишу, а затем —
Вы нажали клавишу: t
Необходимость буферизировать построчно ввод, осуществляемый с консоли посредством метода Read()
, иногда может быть досадным препятствием. Ведь при нажатии клавиши ReadKey()
. Для считывания строки символов служит приведенный ниже метод ReadLine()
.
static string ReadLine()
Символы считываются методом ReadLine()
до тех пор, пока пользователь не нажмет клавишу string
. Кроме того, он сгенерирует исключение IOException
при неудачном исходе операции ввода.
Ниже приведен пример программы, в которой демонстрируется чтение строки из потока Console.In
с помощью метода ReadLine()
.
// Ввод с консоли с помощью метода ReadLine().
using System;
class ReadString {
static void Main() {
string str;
Console.WriteLine("Введите несколько символов.");
str = Console.ReadLine();
Console.WriteLine("Вы ввели: " + str);
}
}
Выполнение этой программы может привести, например, к следующему результату.
Введите несколько символов.
Это просто тест.
Вы ввели: Это просто тест.
Итак, для чтения данных из потока Console.In
проще всего воспользоваться методами класса Console
. Но для этой цели можно обратиться и к методам базового класса TextReader
. В качестве примера ниже приведен переделанный вариант предыдущего примера программы, в котором используется метод ReadLine()
, определенный в классе TextReader
.
// Прочитать введенную с клавиатуры строку
// непосредственно из потока Console.In.
using System;
class ReadChars2 {
static void Main() {
string str;
Console.WriteLine("Введите несколько символов.");
str = Console.In.ReadLine(); // вызвать метод ReadLine()
// класса TextReader
Console.WriteLine("Вы ввели: " + str);
}
}