Содержание
Консольный ввод/вывод в C# мы будем использовать на протяжении всего этого руководства, поэтому уже сейчас не лишним будет показать вам основные операции, которые мы будем выполнять при написании своих приложений на языке C#. В дальнейшем мы подробно изучим работу с консолью в C#, а сейчас ограничимся лишь теми небольшими знаниями, которые помогут нам в изучении различных приемов программирования.
Консольный ввод/вывод в C#
Консоль в Windows — это текстовый интерфейс для взаимодействия с операционной системой с помощью набора текстовых команд. Часто консолью называют окно приложения Command Prompt, в котором пользователь может вводить команды и получать текстовые ответы. Мы также будем пользоваться названием «Консоль», вместо Command Prompt.
Любая более менее серьезная программа, отличная от а-ля «Hello, World!» должна уметь взаимодействовать с пользователем, даже, если такая программа не имеет никакого графического интерфейса. Так, если мы разрабатываем консольное приложение Windows, то программа должна уметь выводить информацию в консоль, например, запрашивать у пользователя данные или выводить результаты обработки введенных ранее данных (консольный вывод) и производить обратные операции — считывать то, что пользователь ввел в консоли (консольный ввод).
Таким образом, используя только консольный ввод/вывод в C#, мы можем разрабатывать различные по своей сложности и структуре консольные приложения.
Практически в каждом языке программирования имеются свои инструменты и возможности для работы с консолью. В языке C# для этого используется специальный класс Console
.
Что такое Console в приложении на C#?
Когда мы хотим взаимодействовать с консолью Windows в C#, то мы всегда задействуем класс Console
. Класс Console
представляет собой стандартный поток ввода, вывода и ошибок для консольных приложений. Используя этот класс мы организуем в нашем приложении ввод/вывод информации, используя различные свойства и методы.
Пример использования консольного ввода/вывода в C#
Вернемся к нашему приложение из предыдущей части и посмотрим на его код ещё раз:
Console.WriteLine("Введите своё имя: "); string name = Console.ReadLine(); Console.WriteLine($"Привет, {name}!"); Console.ReadKey();
Здесь как раз мы и использовали консольный ввод/вывод в самом простом его виде — мы вывели в консоль запрос для пользователя:
Console.WriteLine("Введите своё имя: ");
пользователь ввел свое имя, после чего мы его прочитали для использования в нашем приложении:
string name = Console.ReadLine();
а именно — вывели в консоль приветствие, используя введенное ранее имя пользователя:
Console.WriteLine($"Привет, {name}!");
Таким образом, используя только текстовые команды, наше приложение взаимодействовало с пользователем для выполнения своей задачи — вывести в консоль приветствие.
Использование интерполяции строк для консольного вывода
Обратите внимание ещё раз на то, как выводится приветствие в консоль:
Console.WriteLine($"Привет, {name}!");
Этот прием в C# называется интерполяция строк и о ней мы также подробно поговорим, когда будем изучать работу со строками. Сейчас же нам достаточно запомнить то, как работает интерполяция строк в самом простом её виде.
Используя интерполяцию строк мы можем форматировать консольный вывод как нам хочется. Смысл интерполяции строк в C# заключается в том, чтобы подставить на место специальных заполнителей те данные, которые имеются в приложении:
Интерполируемая строка всегда начинается со специального символа $
, а внутри строки в фигурных скобках мы указываем те данные которые нам необходимо вставить в строку:
При необходимости, мы можем вставить в строку несколько значений, например,
string name = Console.ReadLine(); string hello = "Добрый день"; Console.WriteLine($"{hello}, {name}!");
Здесь мы интерполируем строку, используя сразу два значения переменных — hello
и name
. В результате, консольный вывод будет таким:
Методы WriteLine(), Write(), ReadLine() и ReadKey()
Для вывода данных в консоль предусмотрены два метода – WriteLine()
и Write()
. Отличие этих методов состоит в том, что метод WriteLine
()
выводит данные в консоль и переводит курсор на новую строку, а метод Write
()
выводит данные в консоль и оставляет курсор на той же строке. Чтобы увидеть различие в этих методах, перепишем наше приложение из предыдущей части следующим образом:
Console.Write("Введите своё имя: ");//ввод имени будет производиться в этой же строке string name = Console.ReadLine(); Console.WriteLine($"Привет, {name}!"); Console.ReadKey();
Теперь запустите приложение и попробуйте ввести имя пользователя. Вы увидите следующее:
В свою очередь, метод ReadLine()
производит чтение пользовательского ввода из консоли и переводит курсор на новую строку.
В отличие от ReadLine()
, метод ReadKey()
возвращает информацию о нажатой клавише, включая такую информацию, как нажатые клавиши-модификаторы (Ctrl и Shift). При этом, часто метод ReadKey()
используется как «заглушка» — его вызов блокирует окно консоли до тех пор, пока пользователь не нажмет какую-либо клавишу. Чтобы понять что это означает для нас — попробуйте запустить наше приложение НЕ из Visual Studio, а напрямую из Проводника Windows. Вы увидите, что после вывода приветствия окно консоли остается открытым пока вы не нажмете любую клавишу. Затем закомментируйте вызов ReadKey()
, вот так:
Console.Write("Введите своё имя: ");//ввод имени будет производиться в этой же строке string name = Console.ReadLine(); Console.Write("Спасибо"); Console.WriteLine($"Привет, {name}!"); //Console.ReadKey();
Соберите приложение, нажав F6 на клавиатуре, а затем снова запустите приложение из Проводника Windows — вы увидите, что сразу после вывода приветствия окно консоли будет закрыто.
Как получить число из консоли?
В процессе изучения C# мы будем использовать различные типы данных, в основном, строки и числа и, для того, чтобы наши программы работали без ошибок, нам необходимо каким-либо образом уметь преобразовывать пользовательский ввод (строки текста) в числа потому, что класс Console
умеет считывать только строки. Поэтому, пока просто запомните, что для того, чтобы получить из консоли какое-либо число, мы будем пользоваться следующими конструкциями:
Convert.ToInt32("123"); //преобразовать строку "123" в целое число Convert.ToDouble("123.45");//преобразовать строку "123.45" в число с плавающей запятой
В дальнейшем, когда мы немного освоимся в языке программирования, мы более детально изучим и класс Convert
и способы преобразования данных в C#.
Итого
Консольный ввод/вывод в C# организуется с использованием класса Console. Этот класс содержит ряд методов, позволяющих выводить данные в консоль и считывать пользовательский ввод. Для форматирования строк, которые мы выводим в консоль, мы можем воспользоваться интерполяцией строк.