Консольный ввод/вывод в C#

Консольный ввод/вывод в 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}!");

Консольный ввод/вывод в C#

Таким образом, используя только текстовые команды, наше приложение взаимодействовало с пользователем для выполнения своей задачи — вывести в консоль приветствие.

Использование интерполяции строк для консольного вывода

Обратите внимание ещё раз на то, как выводится приветствие в консоль:

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. Этот класс содержит ряд методов, позволяющих выводить данные в консоль и считывать пользовательский ввод. Для форматирования строк, которые мы выводим в консоль, мы можем воспользоваться интерполяцией строк.

Подписаться
Уведомить о
guest
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии