Что такое Console.Write в C#?
В C# методы Console.Write и Console.WriteLine используются для вывода текста и значений на консоль. Эти методы обеспечивают простой способ взаимодействия с пользователем и вывода информации в окно консоли.
Вывод без перевода строки: Метод Console.Write выводит текст или значения на консоль без добавления перевода строки. Вывод остается на одной строке.
// Пример использования Console.Write для вывода текста без перевода строки Console.Write("Привет, "); Console.Write("мир!"); // Вывод: Привет, мир!
Вывод с переводом строки: Метод Console.WriteLine выводит текст или значения на консоль с добавлением перевода строки. Каждый вызов начинает новую строку вывода.
// Пример использования Console.WriteLine для вывода текста с переводом строки Console.WriteLine("Привет, мир!"); // Вывод: // Привет, мир!
Console writeline c что это
Для вывода информации на консоль мы уже использовали встроенный метод Console.WriteLine . То есть, если мы хотим вывести некоторую информацию на консоль, то нам надо передать ее в метод Console.WriteLine:
string hello = "Привет мир"; Console.WriteLine(hello); Console.WriteLine("Добро пожаловать в C#!"); Console.WriteLine("Пока мир. "); Console.WriteLine(24.5);
Привет мир! Добро пожаловать в C#! Пока мир. 24,5
Нередко возникает необходимость вывести на консоль в одной строке значения сразу нескольких переменных. В этом случае мы можем использовать прием, который называется интерполяцией:
string name = "Tom"; int age = 34; double height = 1.7; Console.WriteLine($"Имя: Возраст: Рост: м");
Для встраивания отдельных значений в выводимую на консоль строку используются фигурные скобки, в которые заключается встраиваемое значение. Это можем значение переменной ( ) или более сложное выражение (например, операция сложения ). А перед всей строкой ставится знак доллара $.
При выводе на консоль вместо помещенных в фигурные скобки выражений будут выводиться их значения:
Имя: Tom Возраст: 34 Рост: 1,7м
Есть другой способ вывода на консоль сразу нескольких значений:
string name = "Tom"; int age = 34; double height = 1.7; Console.WriteLine("Имя: Возраст: Рост: м", name, height, age);
Здесь мы видим, что строка в Console.WriteLine содержит некие числа в фигурных скобках: , , . Это плейсхолдеры, вместо которых при выводе строки на консоль будут подставляться некоторые значения. Подставляемые значения указываются после строки через запятую.
При этом важен порядок подобных плейсхолдеров. Например, в данном случае после строки первой указана переменная name, потом height и потом age. Поэтому значение переменной name будет вставляться вместо первого плейсхолдера — (нумерация начинается с нуля), height — вместо , а age — вместо . Поэтому в итоге пи выводе на консоль строка
"Имя: Возраст: Рост: м"
будет заменена на
"Имя: Tom Возраст: 34 Рост: 1,7м"
Console.Write
Кроме Console.WriteLine() можно также использовать метод Console.Write() , он работает точно так же за тем исключением, что не добавляет переход на следующую строку, то есть последующий консольный вывод будет выводиться на той же строке.
string name = "Tom"; int age = 34; double height = 1.7; Console.Write($"Имя: Возраст: Рост: м");
Консольный ввод
Кроме вывода информации на консоль мы можем получать информацию с консоли. Для этого предназначен метод Console.ReadLine() . Он позволяет получить введенную строку.
Console.Write("Введите свое имя: "); string? name = Console.ReadLine(); Console.WriteLine($"Привет ");
В данном случае все, что вводит пользователь, с помощью метода Console.ReadLine() передается в переменную name.
Пример работы программы:
Введите свое имя: Том Привет Том
Особенностью метода Console.ReadLine() является то, что он может считать информацию с консоли только в виде строки. Кроме того, возможная ситуация, когда для метода Console.ReadLine не окажется доступных для считывания строк, то есть когда ему нечего считывать, он возвращаает значение null , то есть, грубо говоря, фактически отсутствие значения. И чтобы отразить эту ситуацию мы определяем переменную name , в которую получаем ввод с консоли, как переменную типа string? . Здесь string указывает, что переменная может хранить значения типа string, то есть строки. А знак вопроса ? указывает, что переменная также может хранить значение null , то есть по сути не иметь никакого значения. Далее мы более подробно разберем null и как с ним работать.
Однако, может возникнуть вопрос, как нам быть, если, допустим, мы хотим ввести возраст в переменную типа int или другую информацию в переменные типа double или decimal? По умолчанию платформа .NET предоставляет ряд методов, которые позволяют преобразовать различные значения к типам int, double и т.д. Некоторые из этих методов:
- Convert.ToInt32() (преобразует к типу int)
- Convert.ToDouble() (преобразует к типу double)
- Convert.ToDecimal() (преобразует к типу decimal)
Пример ввода значений:
Console.Write("Введите имя: "); string? name = Console.ReadLine(); Console.Write("Введите возраст: "); int age = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите рост: "); double height = Convert.ToDouble(Console.ReadLine()); Console.Write("Введите размер зарплаты: "); decimal salary = Convert.ToDecimal(Console.ReadLine()); Console.WriteLine($"Имя: Возраст: Рост: м Зарплата: $");
При вводе важно учитывать текущую операционную систему. В одних культурах разделителем между целой и дробной частью является точка (США, Великобритания. ), в других — запятая (Россия, Германия. ). Например, если текущая ОС — русскоязычная, значит, надо вводить дробные числа с разделителем запятой. Если локализация англоязычная, значит, разделителем целой и дробной части при вводе будет точка.
Пример работы программы:
Введите имя: Том Введите возраст: 25 Введите рост: 1,75 Введите размер зарплаты: 300,67 Имя: Том Возраст: 25 Рост: 1,75м Зарплата: 300,67$
C#. Урок 3. Консольный ввод\вывод
![]()
Backend-разработка и создание утилит командной строки невозможно без консольного ввода\вывода. В рамках данной статьи будут рассмотрены методы класса Console для чтения и записи информации в консоль.
- Консольный ввод\вывод
- Класс Console. Вывод данных в консоль
- Метод Write
- Метод WriteLine
- Метод Read
- Метод ReadLine
- Метод ReadKey
Исходный код примеров из этой статьи можете скачать из нашего github-репозитория.
Консольный ввод\вывод
Все приложения условно можно разделить на две группы: консольные и с графическим интерфейсом пользователя. Ко второй группе относится большая часть приложений, с которыми работают пользователи в операционной системе Windows, на смартфонах и в вебе. Под консольными будем понимать приложения, которые запускаются через терминал (командную строку), их взаимодействие с пользователем происходит в текстовом режиме. Практически все приложения, которые запускаются на стороне сервера можно отнести к этой группе. Для организации ввода\вывода информации при работе с консолью в C# используется класс Console.
Класс Console. Вывод данных в консоль
Класс Console содержит методы для работы с консольным вводом\выводом, управлением потоком с ошибками и окном консоли. Начнем с вывода информации в консоль, для решения этой задачи класс Console предоставляет два метода: Write и WriteLine.
Для знакомства с методами класса Console создайте в удобном для вас каталоге проект с именем CSharpLesson3:
> dotnet new console -o CSharpLesson3
Метод Write
Метод Write – направляет в стандартный выходной поток текстовое представление переданного в него объекта. Дополнительно, предоставляет возможность задать форматирование.
Откройте файл Program.cs в созданном ранее проекте и добавьте в метод Main следующие строки, демонстрирующие работу с методом Write:
// Примеры работы с методом Write без форматирования Console.Write("Текущая дата: "); Console.Write(DateTime.Now); Console.Write("\n"); Console.Write($"Текущая дата: \n"); // Примеры работы с методом Write с использованием форматирования Console.Write("Текущая дата: \n", DateTime.Now); Console.Write("Число: \n", 123.456789);Более подробно про форматирование будет написано в уроке, посвященном работе со строками.
Сохраните документ, откройте консоль, перейдите в каталог с проектом и выполните команду:
> dotnet run
Результат работы программы будет выглядеть примерно следующим образом:
Текущая дата: 16.10.2020 11:48:28 Текущая дата: 16.10.2020 11:48:28 Текущая дата: 16.10.2020 11:48:28 Текущая дата: 1,234568E+002
Обратите внимание на первые три вызова метода Write, если не поставить символ перевода строки, то данные будут выдаваться в одну строку друг за другом, это не всегда удобно. Если требуется, чтобы вывод каждый раз осуществлялся с новой строки, то воспользуйтесь методом WriteLine.
Метод WriteLine
Метод WriteLine записывает указанные данные в выходной поток и добавляет символ перевода строки. Добавьте в программу следующие строки:
Console.WriteLine("Текущая дата: "); Console.WriteLine(DateTime.Now);Теперь надпись “Текущая дата:” и дата со временем будут выведены в разных строках.
WriteLine (также как Write) может принимать не только строковые значения, но и переменные разных типов:DateTime nowDate = DateTime.Now; string someText = "Сегодня"; int number = 924; Console.WriteLine(nowDate); Console.WriteLine(someText); Console.WriteLine(number);
Удобным и наглядным способом вывода значений переменных в консоль с дополнительным текстовым пояснением является использование строковой интерполяции:
Console.WriteLine($" . Число: ");
Запустите проект и в консоли увидите результат выполнения программы:
Сегодня 26.08.2020 11:53:44. Число: 924
Прием интерполяции позволяет внутри строки, используя фигурные скобки, указывать имена переменных, которые будут заменены значениями. Перед такой строкой ставится знак $.
Методы WriteLine и Write позволяют использовать форматирование:Console.WriteLine(":, Число: ", nowDate, someText, number);В этом случае методу передается ряд параметров, первый – это строка, в которой, в фигурных скобках, указывается порядок подстановки значений переменных, далее, через запятую, перечисляются переменные, значения которых нужно подставить, здесь важен порядок: нумерация начинается с 0.
Класс Console. Чтение данных из консоли
В классе Console, помимо рассмотренных выше методов вывода в консоль, присутствуют методы для считывания вводимых данных из консоли.
Метод Read
Метод Read возвращает числовой код последнего введенного символа во входном потоке, если символ введен не был, то будет возвращен код -1. Для завершения работы метода, после ввода символа необходимо нажать клавишу “Enter”. Рассмотрим работу с методом Read на примере:
Console.WriteLine("Нажмите любую клавишу, а затем Enter"); int key1 = Console.Read(); Console.WriteLine($"Код нажатой клавиши: "); Console.WriteLine("Символьное представление: " + Convert.ToChar(key1));Если после надписи “Нажмите любую клавишу, а затем Enter” будет введено более одного символа, то Read вернет только первый.
Для представления кода в виде символа необходимо переменную key1 привести к типу Char, для этого можно воспользоваться методом Convert.ToChar().
Метод ReadLine
Метод ReadLine возвращает введенную строку символов до нажатия клавиши “Enter”. Добавим несколько строк в файл с исходным кодом, для демонстрации работы с методом ReadLine :
Console.WriteLine("Введите ваше имя, а затем нажмите Enter"); string name = Console.ReadLine(); Console.WriteLine($"Привет, !");Если необходимо получить с консоли численные данные, то следует воспользоваться методами из класса Convert для приведения типа String к соответствующему числовому типу:
Console.WriteLine("Сколько вам лет?"); int age = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Ваш рост в см?"); int height = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Привет , вам уже полных лет и ваш рост см", name, age, height);Метод ReadKey
ReadKey возвращает объект класса ConsoleKeyInfo, в который помещается информация о нажатой клавише. Этот метод, как правило, используют для остановки выполнения программы или чтобы получить ответ от пользователя. Добавим строки для работы с ReadKey:
Console.WriteLine("Нажмите любую клавишу:"); var key2 = Console.ReadKey(); Console.WriteLine(key2.Key); Console.WriteLine(key2.KeyChar);Исходный код примеров из этой статьи можете скачать из нашего github-репозитория.
Консольный ввод/вывод и форматирование
В консольных приложениях не обойтись без методов класса Console.
И главные из них: string Console.ReadLine() и void Console.WriteLine(). По сути мы можем вводить только строку, а для ввода числа необходимо преобразовать введенную строку в число соответствующего формата методами класса Convert.Рассмотрим примеры стандартных действий:
// Подсказка - приглашение к диалогу Console.Write("Ваше имя: "); // Ввод строки string name = Console.ReadLine(); // Приветствие + подсказка Console.Write("Привет, " + name + "\nВведите Ваш рост в см: "); // Ввод числа. Чтобы сразу получить число, используйте методы класса Convert double height = Convert.ToDouble(Console.ReadLine())/100; name = "Петр 1"; double height_P = 2.04; if (height < height_P) Console.WriteLine(name + " был чуть выше Вас ростом!"); else Console.WriteLine("Не всякие императоры обладали высоким ростом!"); int a = 13; // Составные строки из строковых констант, переменных и выражений Console.WriteLine("Сторона квадрата: " + a + " площадь: " + a * a); Console.WriteLine("Имя: " + name + " Рост: " + height_P + " м");Вывод через подстановку переменных в фигурные скобки
Console.WriteLine("Имя: Рост: м", name, height_P);Использование интерполяции. Символ $ перед » … «. Добавлено в последних версиях языка, наиболее изящный способ вывода:
Console.WriteLine($"Имя: Рост: м");
Вывод чисел с округлением по формату и без:
double e = Math.E; // Константа класса Math Console.WriteLine("e = | | | ", e, e, e, e);Для форматирования целочисленных значений применяется описатель «d». Число после описателя указывает, сколько цифр будет в числовом значении. Если в исходном числе цифр меньше, то к нему добавляются нули.
int number = 314; string result = String.Format("", number); Console.WriteLine(result); string result1 = String.Format("", number); Console.WriteLine(result1);Форматирование дробных чисел.
Для форматирования дробных чисел используется описатель F, число после которого указывает, сколько знаков будет использоваться после разделителя между целой и дробной частью. Если исходное число — целое, то к нему добавляются разделитель и нули.int number2 = 23; string result2 = String.Format("", number2); Console.WriteLine(result2); // 23,00 double number3 = 45.08; string result3 = String.Format("", number3); Console.WriteLine(result3); // 45,0800 double number4 = 25.07; // вывод с округлением string result4 = String.Format("", number4); Console.WriteLine(result4); // 25,1Формат процентов. Описатель «P» задает отображение процентов. Используемый с ним числовой спецификатор указывает, сколько знаков будет после запятой:
decimal number5 = 0.314158m; Console.WriteLine("", number5);Настраиваемые форматы.
Используя знак #, можно настроить формат вывода. Например, нам надо вывести некоторое число в формате телефона +х (ххх)ххх-хх-хх:long number6 = 19876543210; string result6 = String.Format("", number6); Console.WriteLine(result6);Метод ToString() не только получает строковое описание объекта, но и может осуществлять форматирование. Он поддерживает те же описатели, что используются в методе Format:
long number7 = 19876543210; Console.WriteLine(number7.ToString("+# (###) ###-##-##"));// +1 (987) 654-32-10 Console.ReadKey();Результат выполнения программы должен выглядеть так:
Ваше имя: Сергей Привет, Сергей Введите Ваш рост в см: 202 Петр 1 был чуть выше Вас ростом! Сторона квадрата: 13 площадь: 169 Имя: Петр 1 Рост: 2,04 м Имя: Петр 1 Рост: 2,04 м Имя: Петр 1 Рост: 2,04 м e = 2,7 | 2,72 | 2,718 | 2,71828182845905 314 0314 23,00 45,0800 25,1 31,4% +1 (987) 654-32-10 +1 (987) 654-32-10
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.