Консольные приложения имеют весьма ограниченную область применения, самой распространенной из которых является обучение языку программирования. Для организации ввода и вывода используется известный вам класс Console, определенный в пространстве имен System. В этом классе определены три стандартных потока: входной поток Console.In класса TextReader и выходные потоки Console.Out и Console.Error класса TextWriter.
По умолчанию входной поток связан с клавиатурой, а выходные — с экраном, однако можно перенаправить эти потоки на другие устройства с помощью методов SetIn и SetOut или средствами операционной системы (перенаправление с помощью операций <, > и >>).
При обмене с консолью можно применять методы указанных потоков, но чаще используются методы класса Console — Read, ReadLine, Write иWriteLine, которые просто передают управление методам нижележащих классов In, Out и Error.
Использование не одного, а двух выходных потоков полезно при желании разделить нормальный вывод программы и ее сообщения об ошибках. Например, нормальный вывод программы можно перенаправить в файл, а сообщения об ошибках — на консоль или в файл журнала.