Перейти к содержимому

Console readkey c что это

  • автор:

Console. Read Key Метод

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

Получает следующий нажатый пользователем символ или функциональную клавишу.

Перегрузки

Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша отображается в окне консоли.

Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша может быть отображена в окне консоли.

ReadKey()

Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша отображается в окне консоли.

public: static ConsoleKeyInfo ReadKey();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")] public static ConsoleKeyInfo ReadKey ();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")] [System.Runtime.Versioning.UnsupportedOSPlatform("android")] [System.Runtime.Versioning.UnsupportedOSPlatform("ios")] [System.Runtime.Versioning.UnsupportedOSPlatform("tvos")] public static ConsoleKeyInfo ReadKey ();
public static ConsoleKeyInfo ReadKey ();
[] static member ReadKey : unit -> ConsoleKeyInfo
[] [] [] [] static member ReadKey : unit -> ConsoleKeyInfo
static member ReadKey : unit -> ConsoleKeyInfo
Public Shared Function ReadKey () As ConsoleKeyInfo
Возвращаемое значение

Объект, описывающий константу ConsoleKey и символ Юникода (при наличии), соответствующий нажатой клавише консоли. Этот объект ConsoleKeyInfo также описывает в битовой комбинации значений ConsoleModifiers, нажимались ли клавиши-модификаторы (одна или несколько) Shift, Alt или Ctrl одновременно с клавишей консоли.

Исключения

Свойство In перенаправлено из потока, отличного от консоли.

Примеры

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

using System; public class Example < public static void Main() < DateTime dat = DateTime.Now; Console.WriteLine("The time: at ", dat); TimeZoneInfo tz = TimeZoneInfo.Local; Console.WriteLine("The time zone: \n", tz.IsDaylightSavingTime(dat) ? tz.DaylightName : tz.StandardName); Console.Write("Press to exit. "); while (Console.ReadKey().Key != ConsoleKey.Enter) <> > > // The example displays output like the following: // The time: 11/11/2015 at 4:02 PM: // The time zone: Pacific Standard Time 
open System let dat = DateTime.Now printfn $"The time: at " let tz = TimeZoneInfo.Local printfn $"The time zone: \n" printf"Press to exit. " while Console.ReadKey().Key <> ConsoleKey.Enter do () // The example displays output like the following: // The time: 12/28/2021 at 8:35 PM // The time zone: Pacific Standard Time 
Module Example Public Sub Main() Dim dat As Date = Date.Now Console.WriteLine("The time: at ", dat) Dim tz As TimeZoneInfo = TimeZoneInfo.Local Console.WriteLine("The time zone: ", If(tz.IsDaylightSavingTime(dat), tz.DaylightName, tz.StandardName)) Console.WriteLine() Console.Write("Press to exit. ") Do While Console.ReadKey().Key <> ConsoleKey.Enter Loop End Sub End Module ' The example displays the following output: ' The time: 11/11/2015 at 4:02 PM ' The time zone: Pacific Standard Time 

Обратите внимание, что эта перегрузка ReadKey метода по умолчанию повторяет все отображаемые клавиши, нажимаемые пользователем в консоли. Чтобы подавить их, вызовите ReadKey метод с аргументом true intercept .

В следующем примере метод используется для ReadKey() отображения сведений о нажатой пользователем клавише.

using namespace System; void main() < ConsoleKeyInfo cki; // Prevent example from ending if CTL+C is pressed. Console::TreatControlCAsInput = true; Console::WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key."); Console::WriteLine("Press the Escape (Esc) key to quit: \n"); do < cki = Console::ReadKey(); Console::Write(" --- You pressed "); if((cki.Modifiers & ConsoleModifiers::Alt) != ConsoleModifiers()) Console::Write("ALT+"); if((cki.Modifiers & ConsoleModifiers::Shift) != ConsoleModifiers()) Console::Write("SHIFT+"); if((cki.Modifiers & ConsoleModifiers::Control) != ConsoleModifiers()) Console::Write("CTL+"); Console::WriteLine(cki.Key.ToString()); >while (cki.Key != ConsoleKey::Escape); > // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // a --- You pressed A // k --- You pressed ALT+K // ► --- You pressed CTL+P // --- You pressed RightArrow // R --- You pressed SHIFT+R // --- You pressed CTL+I // j --- You pressed ALT+J // O --- You pressed SHIFT+O // § --- You pressed CTL+U > 
using System; class Example < public static void Main() < ConsoleKeyInfo cki; // Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput = true; Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key."); Console.WriteLine("Press the Escape (Esc) key to quit: \n"); do < cki = Console.ReadKey(); Console.Write(" --- You pressed "); if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+"); if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+"); if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+"); Console.WriteLine(cki.Key.ToString()); >while (cki.Key != ConsoleKey.Escape); > > // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // a --- You pressed A // k --- You pressed ALT+K // ► --- You pressed CTL+P // --- You pressed RightArrow // R --- You pressed SHIFT+R // --- You pressed CTL+I // j --- You pressed ALT+J // O --- You pressed SHIFT+O // § --- You pressed CTL+U 
open System // Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput while cki.Key <> ConsoleKey.Escape do cki 0 then printf "ALT+" if int (cki.Modifiers &&& ConsoleModifiers.Shift) <> 0 then printf "SHIFT+" if int (cki.Modifiers &&& ConsoleModifiers.Control) <> 0 then printf "CTL+" printfn $"" // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // a --- You pressed A // k --- You pressed ALT+K // ► --- You pressed CTL+P // --- You pressed RightArrow // R --- You pressed SHIFT+R // --- You pressed CTL+I // j --- You pressed ALT+J // O --- You pressed SHIFT+O // § --- You pressed CTL+U 
Class Example Public Shared Sub Main() Dim cki As ConsoleKeyInfo ' Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput = True Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.") Console.WriteLine("Press the Escape (Esc) key to quit: " + vbCrLf) Do cki = Console.ReadKey() Console.Write(" --- You pressed ") If (cki.Modifiers And ConsoleModifiers.Alt) <> 0 Then Console.Write("ALT+") If (cki.Modifiers And ConsoleModifiers.Shift) <> 0 Then Console.Write("SHIFT+") If (cki.Modifiers And ConsoleModifiers.Control) <> 0 Then Console.Write("CTL+") Console.WriteLine(cki.Key.ToString) Loop While cki.Key <> ConsoleKey.Escape End Sub End Class ' This example displays output similar to the following: ' Press any combination of CTL, ALT, and SHIFT, and a console key. ' Press the Escape (Esc) key to quit: ' ' a --- You pressed A ' k --- You pressed ALT+K ' ► --- You pressed CTL+P ' --- You pressed RightArrow ' R --- You pressed SHIFT+R ' --- You pressed CTL+I ' j --- You pressed ALT+J ' O --- You pressed SHIFT+O ' § --- You pressed CTL+U 

Комментарии

Метод ReadKey ожидает, то есть блокирует поток, выдающий ReadKey метод, пока не будет нажат символьная или функциональная клавиша. Символьная или функциональная клавиша может быть нажата в сочетании с одной или несколькими клавишами-модификаторами ALT, CTRL или SHIFT. Однако нажатие клавиши-модификатора само по себе не приведет к возврату ReadKey метода.

В зависимости от приложения может потребоваться использовать метод в сочетании ReadKey со свойством KeyAvailable .

Метод ReadKey считывает с клавиатуры, даже если стандартные входные данные перенаправляются в файл с SetIn помощью метода .

См. также раздел

  • ConsoleKey
  • KeyAvailable
  • TreatControlCAsInput
  • CancelKeyPress

Применяется к

ReadKey(Boolean)

Получает следующий нажатый пользователем символ или функциональную клавишу. Нажатая клавиша может быть отображена в окне консоли.

public: static ConsoleKeyInfo ReadKey(bool intercept);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")] public static ConsoleKeyInfo ReadKey (bool intercept);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")] [System.Runtime.Versioning.UnsupportedOSPlatform("android")] [System.Runtime.Versioning.UnsupportedOSPlatform("ios")] [System.Runtime.Versioning.UnsupportedOSPlatform("tvos")] public static ConsoleKeyInfo ReadKey (bool intercept);
public static ConsoleKeyInfo ReadKey (bool intercept);
[] static member ReadKey : bool -> ConsoleKeyInfo
[] [] [] [] static member ReadKey : bool -> ConsoleKeyInfo
static member ReadKey : bool -> ConsoleKeyInfo
Public Shared Function ReadKey (intercept As Boolean) As ConsoleKeyInfo
Параметры

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

Возвращаемое значение

Объект, описывающий константу ConsoleKey и символ Юникода (при наличии), соответствующий нажатой клавише консоли. Этот объект ConsoleKeyInfo также описывает в битовой комбинации значений ConsoleModifiers, нажимались ли клавиши-модификаторы (одна или несколько) Shift, Alt или Ctrl одновременно с клавишей консоли.

Исключения

Свойство In перенаправлено из потока, отличного от консоли.

Примеры

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

using System; public class Example < public static void Main() < DateTime dat = DateTime.Now; Console.WriteLine("The time: at ", dat); TimeZoneInfo tz = TimeZoneInfo.Local; Console.WriteLine("The time zone: \n", tz.IsDaylightSavingTime(dat) ? tz.DaylightName : tz.StandardName); Console.Write("Press to exit. "); while (Console.ReadKey(true).Key != ConsoleKey.Enter) <> > > // The example displays output like the following: // The time: 11/11/2015 at 4:02 PM: // The time zone: Pacific Standard Time 
open System let dat = DateTime.Now printfn $"The time: at " let tz = TimeZoneInfo.Local printfn $"The time zone: \n" printf"Press to exit. " while Console.ReadKey(true).Key <> ConsoleKey.Enter do () // The example displays output like the following: // The time: 12/28/2021 at 8:37 PM // The time zone: Pacific Standard Time 
Module Example Public Sub Main() Dim dat As Date = Date.Now Console.WriteLine("The time: at ", dat) Dim tz As TimeZoneInfo = TimeZoneInfo.Local Console.WriteLine("The time zone: ", If(tz.IsDaylightSavingTime(dat), tz.DaylightName, tz.StandardName)) Console.WriteLine() Console.Write("Press to exit. ") Do While Console.ReadKey(True).Key <> ConsoleKey.Enter Loop End Sub End Module ' The example displays the following output: ' The time: 11/11/2015 at 4:02 PM ' The time zone: Pacific Standard Time 

В следующем примере метод используется ReadKey(Boolean) для отображения сведений о клавише, нажатой пользователем, без повторения этой клавиши в консоли.

using namespace System; void main() < ConsoleKeyInfo cki; // Prevent example from ending if CTL+C is pressed. Console::TreatControlCAsInput = true; Console::WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key."); Console::WriteLine("Press the Escape (Esc) key to quit: \n"); do < cki = Console::ReadKey(true); Console::Write("You pressed "); if ((cki.Modifiers & ConsoleModifiers::Alt) != ConsoleModifiers()) Console::Write("ALT+"); if ((cki.Modifiers & ConsoleModifiers::Shift) != ConsoleModifiers()) Console::Write("SHIFT+"); if ((cki.Modifiers & ConsoleModifiers::Control) != ConsoleModifiers()) Console::Write("CTL+"); Console::WriteLine("(character '')", cki.Key, cki.KeyChar); > while (cki.Key != ConsoleKey::Escape); > // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // You pressed CTL+A (character '☺') // You pressed C (character 'c') // You pressed CTL+C (character '♥') // You pressed K (character 'k') // You pressed ALT+I (character 'i') // You pressed ALT+U (character 'u') // You pressed ALT+SHIFT+H (character 'H') // You pressed Escape (character '←') 
using System; class Example < public static void Main() < ConsoleKeyInfo cki; // Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput = true; Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key."); Console.WriteLine("Press the Escape (Esc) key to quit: \n"); do < cki = Console.ReadKey(true); Console.Write("You pressed "); if ((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+"); if ((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+"); if ((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+"); Console.WriteLine("(character '')", cki.Key, cki.KeyChar); > while (cki.Key != ConsoleKey.Escape); > > // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // You pressed CTL+A (character '☺') // You pressed C (character 'c') // You pressed CTL+C (character '♥') // You pressed K (character 'k') // You pressed ALT+I (character 'i') // You pressed ALT+U (character 'u') // You pressed ALT+SHIFT+H (character 'H') // You pressed Escape (character '←') 
open System // Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput while cki.Key <> ConsoleKey.Escape do cki 0 then printf "ALT+" if int (cki.Modifiers &&& ConsoleModifiers.Shift) <> 0 then printf "SHIFT+" if int (cki.Modifiers &&& ConsoleModifiers.Control) <> 0 then printf "CTL+" printfn $" (character '')" // This example displays output similar to the following: // Press any combination of CTL, ALT, and SHIFT, and a console key. // Press the Escape (Esc) key to quit: // // You pressed CTL+A (character '☺') // You pressed C (character 'c') // You pressed CTL+C (character '♥') // You pressed K (character 'k') // You pressed ALT+I (character 'i') // You pressed ALT+U (character 'u') // You pressed ALT+SHIFT+H (character 'H') // You pressed Escape (character '←') 
Class Example Public Shared Sub Main() Dim cki As ConsoleKeyInfo ' Prevent example from ending if CTL+C is pressed. Console.TreatControlCAsInput = True Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.") Console.WriteLine("Press the Escape (Esc) key to quit: " + vbCrLf) Do cki = Console.ReadKey(True) Console.Write("You pressed ") If (cki.Modifiers And ConsoleModifiers.Alt) <> 0 Then Console.Write("ALT+") If (cki.Modifiers And ConsoleModifiers.Shift) <> 0 Then Console.Write("SHIFT+") If (cki.Modifiers And ConsoleModifiers.Control) <> 0 Then Console.Write("CTL+") Console.WriteLine(" (character '')", cki.Key, cki.KeyChar) Loop While cki.Key <> ConsoleKey.Escape End Sub End Class ' This example displays output similar to the following: ' Press any combination of CTL, ALT, and SHIFT, and a console key. ' Press the Escape (Esc) key to quit: ' ' You pressed CTL+A (character '☺') ' You pressed C (character 'c') ' You pressed CTL+C (character '♥') ' You pressed K (character 'k') ' You pressed ALT+I (character 'i') ' You pressed ALT+U (character 'u') ' You pressed ALT+SHIFT+H (character 'H') ' You pressed Escape (character '←') 

Комментарии

Метод ReadKey ожидает, то есть блокирует поток, выдающий ReadKey метод, пока не будет нажат символьная или функциональная клавиша. Символьная или функциональная клавиша может быть нажата в сочетании с одной или несколькими клавишами-модификаторами ALT, CTRL или SHIFT. Однако нажатие клавиши-модификатора само по себе не приведет к возврату ReadKey метода.

intercept Если параметр имеет значение true , нажатая клавиша перехватывается и не отображается в окне консоли; в противном случае отображается нажатая клавиша.

В зависимости от приложения может потребоваться использовать метод в сочетании ReadKey со свойством KeyAvailable .

Метод ReadKey считывает с клавиатуры, даже если стандартные входные данные перенаправляются в файл с SetIn помощью метода .

См. также раздел

  • ConsoleKey
  • KeyAvailable
  • TreatControlCAsInput
  • CancelKeyPress

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# объясните пж как это работает. ConsoleKey keywoard = Console. ReadKey(). Key;

Изучаю только. До этого пользовался int x = x.Parse(Console. Readline()) . Тут все понятно было. Строка считывается с консоли, конвертируется в int и присваивается.

ConsoleKey keywoard = Console.Readkey().Key; 

ConsoleKey — получается тип данных enum , это константы там хранятся значения клавиатуры. Для доступа к ним создаётся keywoard(любое название)Пытаюсь разобратся( Console.Readkey().Key — получается значение считывается с консоли, а что .Key делает после скобок? Простите возможно за бред, сам запутался. Можете объяснить каждую ключевое слово и как вообще это строка работает. Благодарю

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 не будет опубликован. Обязательные поля помечены *