Console readkey c что это

от admin

Консольный ввод-вывод информации с примерами на C# и Windows Terminal

Консоль (Console)- характерная особенность ранних операционных систем (например, MS DOS), использующих интерфейс командной строки для интерактивного обмена информацией с пользователем. Консольные приложения используются и сейчас. По сравнению с графическим интерфейсом, интерфейс командной строки требует меньше системных ресурсов и предоставляет инструменты автоматизации для повторяющихся задач.

Наиболее яркими примерами интерфейсов командной строки (англ. Command line interface, CLI) являются: Командная оболочка Windows, PowerShell, а также Bash, доступная на всех платформах (наибольшее распространение Bash получил в Unix-системах и Mac, присутствует также в компонентах Подсистема Windows для Linux (англ. Windows Subsystem for Linux, WSL)).

В операционной системе Windows консоль называется окном командной строки, для вызова которой Вы можете пройти в меню Пуск — Командная строка. В 2019 году компания Micrsoft также представила Windows Terminal — современное консольное приложение для пользователей инструментов и оболочек командной строки, таких как Command Prompt, PowerShell и WSL.

Форма интерфейсов командной строки используется в основном для обработки сценариев команд с использованием последовательности операций чтения (для принятия данных путем ввода текстовой информации пользователем) и операций записи (в вывод консоли, для отображения результатов обратной связи).

На платформе Microsoft .Net Core такие операции в виде методов описаны в классе System.Console, предоставляющем базовую поддержку для приложений, считывающих и записывающих символы в консоль стандартных входных и выходных потоков.

Программный способ записи в вывод консоли

Для вывода информации на консоль применяются 2 ключевых метода класса Console — Console.WriteLine и Console.Write, отличие которых заключается в том, что WriteLine самостоятельно добавляет терминатор строки (разделитель строки) ко всему, что вы записали. Использование метода Write предполагает ручное разбиение строки на несколько путем добавления в запись вывода терминатора строки, где это необходимо.

Записывает указанные данные с текущим признаком конца строки в стандартный выходной поток.

Console.WriteLine(“Hello, World!”);
Console.WriteLine(“=Second Line=”);

Результатом вывода будет две строки.

Записывает текстовое представление заданного значения или значений в стандартный выходной поток без признака конца строки.

Console.Write(“Hello,”);
Console.Write(“ “);
Console.Write(“World!”);
Console.Write(Environment.NewLine);
Console.Write(“=Second Line=”);

Результат вывода этого примера идентичен.

Во втором примере для разделения строки используется в качестве терминатора свойство Environment.NewLine — это обеспечивает эффективный способ выбора комбинации символов конца строки, которая зависит от используемой вами платформы. Так, большинство Unix-систем применяет специальную комбинацию “\n” в качестве терминатора строки, тогда как Windows-системы “\r\n”.

Формирование строк

При выводе информации вы можете использовать операторы + или += , интерполяцию строк и иные методы для объединения и формирования строковых переменных.

Программный способ ввода информации с консоли

Как и запись в вывод, класс Console предоставляет различные методы для чтения ввода от пользователя.

Метод Console.ReadLine

Считывает набор символов до тех пор, пока не найдет признак окончания или новой строки, и возвращает все, что он считает, как строковое значение.

Console.WriteLine(“What is your name?”);
string response = Console.ReadLine();
Console.WriteLine(“Hello, “ + response+“!“);

Метод Console.Read

Считывает следующий символ в строке и возвращает его как код целочисленного символа.

Console.WriteLine(“Please, type anything: “);
int value = Console.Read();
Console.Write(“You typed: “ + (char)value);

В отличие от ReadLine , метод Read возвращает по одному символу за раз, пока не достигнет конца ввода. Read фактически не возвращает строку, он возвращает целое число, представление ASCII введенного символа. В примере используется функция char() для преобразования полученного целого числа, чтобы получить действительно введенный символ.

Метод Console.ReadKey

Считывает следующий символ в строке и возвращает его как экземпляр ConsoleKeyInfo.

ConsoleKeyInfo описывает нажатую клавишу, включая символ, представленный этой клавишей, и состояние управляющих клавиш-модификаторов (например, Shift, Alt и др.). Нижеследующий пример ожидает нажатия клавиши Enter.

Работа с консолью в C# (класс Console)

Несмотря на развитие приложений с графическим интерфейсом пользователя (GUI), работа в консоли всё равно занимает отнюдь не последнее место при разработке программ и не только в C#. В ряде случаев, работа с консолью просто необходима, например, при разработке приложений для работы с сетью. Более того, когда необходимо написать небольшой тестовый пример или программу для вычислений чего-либо, то намного проще сосредоточиться именно на основной функции программы — расчётах, чем тратить лишнее время на разработку графического интерфейса приложения.

Класс Console

Класс Console в Windows предоставляет нам стандартные потоки ввода/вывода или, если говорить очень просто — окно со специальными свойствами. У этого класса есть набор специальных свойств, которые позволяют управлять этими потоками ввода/вывода, а также украшать, при необходимости, внешний вид консольного приложения, например, менять цвет фона, текста и т.д.

Консольный вывод (методы WriteLine, Write)

Для того, чтобы вывести какое-либо значение в консоль, у класса Console объявлены методы Write и WriteLine , которые имеют различные версии, позволяющие без лишних преобразований выводить в консоль строки, числа, значения типа bool и т.д. Ключевое отличие Write от WriteLine заключается в том, что WriteLine записывает строку в консоль и устанавливает признак окончания строки, т.е. следующий за вызовом WriteLine вывод в консоль будет происходить со следующей строки. Вызов Write оставляет курсор на той же строке. Например,

Выведет в консоль текст в одну строку:

Следующий пример выведет в консоль несколько строк:

Обратите внимание, что мы смогли вывести различные типы данных в консоль — строку, целое число, значение bool и число с плавающей запятой.

Вывод нескольких значений

Нередко бывает необходимо вывести в консоль сразу несколько значений. В этом случае, мы можем воспользоваться двумя подходами. Первый — достаточно старый метод с использованием аргументов. Например:

здесь значения переменных вставляются в строку в соответствии с указанными в фигурных скобках порядковыми номерами (номера начинаются с нуля). В консоли мы увидим следующий вывод:

то есть, порядковому номеру 0 соответствует значение переменной name , 1 — age , 2 — height .

Второй метод — использование интерполяции строк. Это более новый подход и, на мой взгляд, более интуитивно понятный. Например, выведем те же самые переменные , что и в предыдущем примере, используя интерполяцию:

Во-первых, перед строкой указан символ $ , что говорит нам о том, что строка интерполируется. Во-вторых, в фигурных скобках мы уже указываем не номера аргументов метода WriteLine , а непосредственно сами переменные . Результат вывода в консоль будет точно такой же, но строка стала более понятной и читаемой. Возможности интерполяции строк более широкие, чем в представленном примере и об этой замечательной возможности мы ещё поговорим, когда будем рассматривать вопросы связанные с работой со строками.

Консольный ввод (методы Read, ReadLine и ReadKey)

Раз можно вывести значение в консоль, то можно значение и прочитать из консоли и присвоить его какой-либо переменной. Для чтения значений из консоли используются три метода — Read , ReadLine и ReadKey .

Чтение следующей строки (ReadLine)

Отметим, что ReadLine считывает именно строку, то есть, успешным результатом выполнения метода будет string . Если же ReadLine не может считать строку, то возвращается значение null . В примере выше мы обозначили тип переменной name как string? , что дословно означает следующее: переменная должна содержать значение типа string , но также может содержать и null . На возможность переменной хранить null указывает знак вопроса после типа.

Читать:
Спел чек что это
Чтение следующего символа (Read)

Этот метод применяется сравнительно реже, чем предыдущий, но, тем не менее, также может нам пригодиться. Метод Read считывает следующий символ из строки и возвращает его значение в виде значения int32 . Если чтение символа не удалось, что метод возвращает значение -1 .

Чтение следующего нажатого символа или функциональной клавиши (ReadKey)

В отличие от методов Read и ReadLine метод ReadKey возвращает специальную структуру ConsoleKeyInfo , содержащую информацию о нажатой клавише. Например, с помощью ReadKey можно отслеживать какие функциональные клавиши пользователь нажимает

здесь мы используем цикл do. while и считываем очередную нажатую пользователем клавишу до тех пор, кока не будет нажата клавиша Enter . При этом, если пользователь нажмет клавиши F1 или Backspace , то программа выдаст предупреждение.

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

Итого

Сегодня мы рассмотрели основные методы для работы с консолью в C# — ввод и вывод данных с использованием различных методов. Для вывода данных в консоль используются методы Write и WriteLine , в для ввода — Read , ReadLine и ReadKey . На этом работа с консолью не заканчивается и в следующих частях мы рассмотрим то, как сделать консольный вывод в ваших приложениях бол

Console readkey c что это

Console.ReadKey() Method makes the program wait for a key press and it prevents the screen until a key is pressed. In short, it obtains the next character or any key pressed by the user. The pressed key is displayed in the console window(if any input process will happen). There are two methods in the overload list of this method as follows:

ReadKey() Method

This method is used to get the next character or function key pressed by the user. The pressed key is displayed in the console window.

Syntax: public static ConsoleKeyInfo ReadKey ();

Return Value: This method returns an object that describes the ConsoleKey constant and Unicode character(if any), it corresponds to the pressed key.

Exception: This method will give InvalidOperationException if the In property is belongs to some stream which is other than the console. “In” property is use to take standard input stream.

Below programs illustrate the use of the above-discussed method:

Example 1:

Output:

Example 2:

Output:

Example 3:

Output:

ReadKey(Boolean) Method

This method is more similar to the previous method, that is, it also obtains the next character or any key pressed by the user. The only difference is that the pressed key is optionally displayed in the console window.

Syntax: public static ConsoleKeyInfo ReadKey (bool key);
Here, “key” is used to determines whether to display the pressed key in the console window. If “true” then the pressed key will not be shown in the output window. If “false” then the pressed key will be shown in the output window.

Return Value: This method returns an object that describes the ConsoleKey constant and Unicode character(if any), it correspond to the pressed key.

Exception: This method will give InvalidOperationException when the In property is belongs to some stream which is other than the console. “In” property is use to take standard input stream.

C# Console Application – how to read key presses and user inputs

If you’re building a C# console application you may well be facing a few typical challenges. Things like how to stop a console app closing automatically, how to read a specific keypress, or how to wait for keyboard input in a C# console app. I’ll start by explaining how to create a .Net core console application with code snippets and examples throughout including how to use Console.ReadKey in C#.

Please enable JavaScript

Table of contents

Create a .Net core console app in Visual Studio

Create a new solution in Visual Studio, select .Net Core console app as the project type and your first view will contain the Program.cs file with this code in it.

In Visual Studio 2019 a console app window now stays open by default and the console app screen includes text telling you how to change this functionality. If you want to make your console app run and then close, follow the on screen instructions.

c# console.readkey example showing automatically close a console app in visual studio 2019

However if you’re building a Console app in an older version of Visual Studio you’ll find that the console application runs and then closes straight away, so I’ve included a section telling you how to make a C# Console app wait for a keypress before closing using code.

How to stop a pre Visual Studio 2019 Console app closing automatically

You create a console app in Visual Studio, and run it to see what happens. Things DO happen but wait… nothing really seems to have worked. That’s because by default a console app opens, runs, and closes. That’s what they are meant to do . But when you’re building a console app, that isn’t too easy to work with – so how do you stop a console app from closing automatically? We use console.ReadKey in C# to do this, which in code is this:

But read on for a little more info.

How to wait for keyboard input in a C# console

I tend to write a function that outputs a message to the screen telling the user to press any key to continue and then waits for any key press. By including the true in Console.ReadKey(true) it stops the random character being outputted to the screen. So if you DID want to show which key had been pressed then you would change this to simply Console.ReadKey() .

Reading user input in a Console application

The following code snippet shows a text prompt to the user and then waits for them to type their response. When they are finished they press the Enter key to continue.

Reading specific keypresses in C# Console application using Console.Readkey()

You may want to offer your user some choices, or a menu and because you do not have mouse inputs in a console app, you will want to know how to read specific keypresses. The following code snippet waits for the specified key to be pressed.

C# console application example – key presses and user inputs

Having now shown a few examples of a how to read key presses and user inputs in a C# console application here is a full example.

Summary

Now you know how to use Console.Readkey() in a C# console application to read input from the keyboard. You should also now know how to wait for user input, and how to control whether the application window stays open or not.

You may also be interested in :

Get updates next time we post

Ezoic

report this ad

Похожие статьи