Console readkey c что это
Перейти к содержимому

Console readkey c что это

  • автор:

Консольный ввод-вывод

Консольный ввод-вывод осуществляется с помощью стандартных потоков, представленных свойствами Console.In , Console.Out и Console.Error . Примеры консольного ввода-вывода были представлены еще в главе ранее, поэтому он должен быть вам уже знаком. Как будет показано ниже, он обладает и рядом других дополнительных возможностей.

Но прежде следует еще раз подчеркнуть, что большинство реальных приложений C# ориентированы не на консольный ввод-вывод в текстовом виде, а на графический оконный интерфейс для взаимодействия с пользователем, или же они представляют собой программный код, используемый на стороне сервера. Поэтому часть системы ввода-вывода, связанная с консолью, не находит широкого практического применения. И хотя программы, ориентированные на текстовый ввод-вывод, отлично подходят в качестве учебных примеров, коротких сервисных программ или определенного рода программных компонентов, для большинства реальных приложений они не годятся.

Чтение данных из потока ввода с консоли

Поток Console.In является экземпляром объекта класса TextReader , и поэтому для доступа к нему могут быть использованы методы и свойства, определенные в классе TextReader . Но для этой цели чаще все же используются методы, предоставляемые классом Console , в котором автоматически организуется чтение данных из потока Console.In .В классе Console определены три метода ввода. Два первых метода, Read() и ReadLine() , были доступны еще в версии .NET Framework 1.0. А третий метод, ReadKey() , был добавлен в версию 2.0 этой среды. Для чтения одного символа служит приведенный ниже метод Read() .

static int Read()

Метод Read() возвращает очередной символ, считанный с консоли. Он ожидает до тех пор, пока пользователь не нажмет клавишу, а затем возвращает результат. Возвращаемый символ относится к типу int и поэтому должен быть приведен к типу char . Если при вводе возникает ошибка, то метод Read() возвращает значение -1. Этот метод сгенерирует исключение IOException при неудачном исходе операции ввода. Ввод с консоли с помощью метода Read() буферизуется построчно, поэтому пользователь должен нажать клавишу Enter , прежде чем программа получит любой символ, введенный с консоли. Ниже приведен пример программы, в которой метод Read() используется для считывания символа, введенного с клавиатуры.

// Считать символ, введенный с клавиатуры. using System; class Kbln < static void Main() < char ch; Console.Write("Нажмите клавишу, а затем — : "); ch = (char)Console.Read(); // получить значение типа char Console.WriteLine("\nВы нажали клавишу: " + ch); > >

Вот, например, к какому результату может привести выполнение этой программы.

Нажмите клавишу, а затем — : t Вы нажали клавишу: t

Необходимость буферизировать построчно ввод, осуществляемый с консоли посредством метода Read() , иногда может быть досадным препятствием. Ведь при нажатии клавиши Enter в поток ввода передается последовательность символов перевода каретки и перевода строки. Более того, эти символы остаются во входном буфере до тех пор, пока они не будут считаны. Следовательно, в некоторых приложениях приходится удалять эти символы (путем их считывания), прежде чем приступать к следующей операции ввода. Впрочем, для чтения введенных с клавиатуры символов без построчной буферизации, можно воспользоваться рассматриваемым далее методом ReadKey() . Для, считывания строки символов служит приведенный ниже метод ReadLine() .

static string ReadLine()

Символы считываются методом ReadLine() до тех пор, пока пользователь не нажмет клавишу Enter , а затем этот метод возвращает введенные символы в виде объекта типа string . Кроме того, он сгенерирует исключение IOException при неудачном исходе операции ввода. Ниже приведен пример программы, в которой демонстрируется чтение строки из потока Console.In с помощью метода ReadLine() .

// Ввод с консоли с помощью метода ReadLine(). using System; class ReadString < static void Main() < string str; Console.WriteLine("Введите несколько символов."); str = Console.ReadLine(); Console.WriteLine("Вы ввели: " + str); >>

Выполнение этой программы может привести, например, к следующему результату.

Введите несколько символов. Это просто тест. Вы ввели: Это просто тест.

Итак, для чтения данных из потока Console.In проще всего воспользоваться методами класса Console . Но для этой цели можно обратиться и к методам базового класса TextReader . В качестве примера ниже приведен переделанный вариант предыдущего примера программы, в котором используется метод ReadLine() , определенный в классе TextReader .

// Прочитать введенную с клавиатуры строку // непосредственно из потока Console.In. using System; class ReadChars2 < static void Main() < string str; Console.WriteLine("Введите несколько символов."); str = Console.In.ReadLine(); // вызвать метод ReadLine() класса TextReader Console.WriteLine("Вы ввели: " + str); >>

Обратите внимание на то, что метод ReadLine () теперь вызывается в классе TextReader , который является базовым для потока Console.In , то подобные методы вызываются так, как было показано в приведенном выше примере.

Применение метода ReadKey()

В состав среды .NET Framework включен метод, определяемый в классе Console и позволяющий непосредственно считывать отдельно введенные с клавиатуры символы без построчной буферизации. Этот метод называется ReadKey() . При нажатии клавиши метод ReadKey() немедленно возвращает введенный с клавиатуры символ. И в этом случае пользователю уже не нужно нажимать дополнительно клавишу Enter . Таким образом, метод ReadKey() позволяет считывать и обрабатывать ввод с клавиатуры в реальном масштабе времени. Ниже приведены две формы объявления метода ReadKey() .

static ConsoleKeylnfo ReadKey() static ConsoleKeylnfo ReadKey(bool intercept)

В первой форме данного метода ожидается нажатие клавиши. Когда оно происходит, метод возвращает введенный с клавиатуры символ и выводит его на экран. Во второй форме также ожидается нажатие клавиши, и затем возвращается введенный с клавиатуры символ. Но если значение параметра intercept равно true , то введенный символ не отображается. А если значение параметра intercept равно false ,то введенный символ отображается. Метод ReadKey () возвращает информацию о нажатии клавиши в объекте типа ConsoleKeylnfo , который представляет собой структуру, состоящую из приведенных ниже свойств, доступных только для чтения.

char KeyChar ConsoleKey Key ConsoleModifiers Modifiers

Свойство KeyChar содержит эквивалент char введенного с клавиатуры символа, свойство Key — значение из перечисления ConsoleKey всех клавиш на клавиатуре, а свойство Modifiers — описание одной из модифицирующих клавиш ( Alt , Ctrl или Shift ), которые были нажаты, если это действительно имело место, при формировании ввода с клавиатуры. Эти модифицирующие клавиши представлены в перечислении ConsoleModifiers следующими значениями: Control , Shift и Alt . В свойстве Modifiers может присутствовать несколько значений нажатых модифицирующих клавиш.

Главное преимущество метода ReadKey() заключается в том, что он предоставляет средства для организации ввода с клавиатуры в диалоговом режиме, поскольку этот ввод не буферизуется построчно. Для того чтобы продемонстрировать данный метод в действии, ниже приведен соответствующий пример программы.

// Считать символы, введенные с консоли, используя метод ReadKey(). using System; class ReadKeys < static void Main() < ConsoleKeyInfo keypress; Console.WriteLine("Введите несколько символов, " + "а по окончании - ."); do < keypress = Console.ReadKey(); // считать данные о нажатых клавишах Console.WriteLine(" Вы нажали клавишу: " + keypress.KeyChar); // Проверить нажатие модифицирующих клавиш. if ((ConsoleModifiers.Alt & keypress.Modifiers) != 0) Console.WriteLine("Нажата клавиша ."); if ((ConsoleModifiers.Control & keypress.Modifiers) != 0) Console.WriteLine("Нажата клавиша ."); if ((ConsoleModifiers.Shift & keypress.Modifiers) != 0) Console.WriteLine("Нажата клавиша ."); > while (keypress.KeyChar != 'Q'); > >

Вот, например, к какому результату может привести выполнение этой программы.

Введите несколько символов, а по окончании - . a Вы нажали клавишу: a b Вы нажали клавишу: b d Вы нажали клавишу: d A Вы нажали клавишу: A Нажата клавиша . B Вы нажали клавишу: B Нажата клавиша . C Вы нажали клавишу: C Нажата клавиша . • Вы нажали клавишу: • Нажата клавиша . Q Вы нажали клавишу: Q Нажата клавиша .

Как следует из приведенного выше результата, всякий раз, когда нажимается клавиша, метод ReadKey() немедленно возвращает введенный с клавиатуры символ. Этим он отличается от упоминавшегося ранее метода Read() , в котором ввод выполняется с построчной буферизацией. Поэтому если требуется добиться в программе реакции на ввод с клавиатуры, то рекомендуется выбрать метод ReadKey() .

Запись данных в поток вывода на консоль

Потоки Console.Out и Console.Error являются объектами типа TextWriter . Вывод на консоль проще всего осуществить с помощью методов Write() и WriteLine() , с которыми вы уже знакомы. Существуют варианты этих методов для вывода данных каждого из встроенных типов. В классе Console определяются его собственные варианты метода Write() и WriteLine() , и поэтому они могут вызываться непосредственно для класса Console , как это было уже не раз показано на страницах данного курса. Но при желании эти и другие методы могут быть вызваны и для класса TextWriter , который является базовым для потоков Console.Out и Console.Error . Ниже приведен пример программы, в котором демонстрируется вывод в потоки Console.Out и Console.Error . По умолчанию данные в обоих случаях выводятся на консоль.

// Организовать вывод в потоки Console.Out и Console.Error. using System; class ErrOut < static void Main() < int a = 10, b = 0; int result; Console.Out.WriteLine("Деление на нуль приведет " + "к исключительной ситуации."); try < result = a / b; // сгенерировать исключение при попытке деления на нуль >catch (DivideByZeroException exc) < Console.Error.WriteLine(exc.Message); >> >

При выполнении этой программы получается следующий результат.

Деление на нуль приведет к исключительной ситуации. Попытка деления на нуль.

Начинающие программисты порой испытывают затруднения при использовании потока Console.Error . Перед ними невольно встает вопрос: если оба потока, Console.Out и Console.Error , по умолчанию выводят результат на консоль, то зачем нужны два разных потока вывода? Ответ на этот вопрос заключается в том, что стандартные потоки могут быть переадресованы на другие устройства. Так, поток Console.Error можно переадресовать в выходной файл на диске, а не на экран. Это, например, означает, что сообщения об ошибках могут быть направлены в файл журнала регистрации, не мешая выводу на консоль. И наоборот, если вывод на консоль переадресуется, а вывод сообщений об ошибках остается прежним, то на консоли появятся сообщения об ошибках, а не выводимые на нее данные. Мы еще вернемся к вопросу переадресации после рассмотрения файлового ввода-вывода.

Console. Key Available Свойство

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Возвращает или задает значение, указывающее, доступно ли нажатие клавиши во входном потоке.

public: static property bool KeyAvailable < bool get(); >;
public static bool KeyAvailable
static member KeyAvailable : bool
Public Shared ReadOnly Property KeyAvailable As Boolean
Значение свойства

Значение true , если нажатие клавиши доступно; в противном случае — значение false .

Исключения

Стандартный ввод перенаправляется в файл вместо клавиатуры.

Примеры

В следующем примере показано, как использовать KeyAvailable свойство для создания цикла, который выполняется до нажатия клавиши.

using namespace System; using namespace System::Threading; int main() < ConsoleKeyInfo cki; do < Console::WriteLine( "\nPress a key to display; press the 'x' key to quit." ); // Your code could perform some useful task in the following loop. However, // for the sake of this example we'll merely pause for a quarter second. while ( Console::KeyAvailable == false ) Thread::Sleep( 250 ); cki = Console::ReadKey( true ); Console::WriteLine( "You pressed the '' key.", cki.Key ); > while ( cki.Key != ConsoleKey::X ); > /* This example produces results similar to the following: Press a key to display; press the 'x' key to quit. You pressed the 'H' key. Press a key to display; press the 'x' key to quit. You pressed the 'E' key. Press a key to display; press the 'x' key to quit. You pressed the 'PageUp' key. Press a key to display; press the 'x' key to quit. You pressed the 'DownArrow' key. Press a key to display; press the 'x' key to quit. You pressed the 'X' key. */ 
using System; using System.Threading; class Sample < public static void Main() < ConsoleKeyInfo cki; do < Console.WriteLine("\nPress a key to display; press the 'x' key to quit."); // Your code could perform some useful task in the following loop. However, // for the sake of this example we'll merely pause for a quarter second. while (Console.KeyAvailable == false) Thread.Sleep(250); // Loop until input is entered. cki = Console.ReadKey(true); Console.WriteLine("You pressed the '' key.", cki.Key); > while(cki.Key != ConsoleKey.X); > > /* This example produces results similar to the following: Press a key to display; press the 'x' key to quit. You pressed the 'H' key. Press a key to display; press the 'x' key to quit. You pressed the 'E' key. Press a key to display; press the 'x' key to quit. You pressed the 'PageUp' key. Press a key to display; press the 'x' key to quit. You pressed the 'DownArrow' key. Press a key to display; press the 'x' key to quit. You pressed the 'X' key. */ 
open System open System.Threading let mutable cki = Unchecked.defaultof while cki.Key <> ConsoleKey.X do printfn "\nPress a key to display; press the 'x' key to quit." // Your code could perform some useful task in the following loop. However, // for the sake of this example we'll merely pause for a quarter second. while not Console.KeyAvailable do Thread.Sleep 250 // Loop until input is entered. cki ' key." // This example produces results similar to the following: // // Press a key to display; press the 'x' key to quit. // You pressed the 'H' key. // // Press a key to display; press the 'x' key to quit. // You pressed the 'E' key. // // Press a key to display; press the 'x' key to quit. // You pressed the 'PageUp' key. // // Press a key to display; press the 'x' key to quit. // You pressed the 'DownArrow' key. // // Press a key to display; press the 'x' key to quit. // You pressed the 'X' key. 
Imports System.Threading Class Sample Public Shared Sub Main() Dim cki As ConsoleKeyInfo Do Console.WriteLine(vbCrLf & "Press a key to display; press the 'x' key to quit.") ' Your code could perform some useful task in the following loop. However, ' for the sake of this example we'll merely pause for a quarter second. While Console.KeyAvailable = False Thread.Sleep(250) ' Loop until input is entered. End While cki = Console.ReadKey(True) Console.WriteLine("You pressed the '' key.", cki.Key) Loop While cki.Key <> ConsoleKey.X End Sub End Class 'This example produces results similar to the following: ' 'Press a key to display; press the 'x' key to quit. 'You pressed the 'H' key. ' 'Press a key to display; press the 'x' key to quit. 'You pressed the 'E' key. ' 'Press a key to display; press the 'x' key to quit. 'You pressed the 'PageUp' key. ' 'Press a key to display; press the 'x' key to quit. 'You pressed the 'DownArrow' key. ' 'Press a key to display; press the 'x' key to quit. 'You pressed the 'X' key. ' 

Комментарии

Значение свойства возвращается немедленно; то есть свойство не блокирует входные данные, KeyAvailable пока не будет доступно нажатие клавиши.

Используйте свойство в сочетании KeyAvailable только с методом ReadKey , а не с методами Read или ReadLine .

C#. Урок 3. Консольный ввод\вывод

Follow us on Google Plus Follow us on rss

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 readkey 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$

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *