Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ПолноС руководство. Π‘# 4.0Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 92

Автор Π¨ΠΈΠ»Π΄Ρ‚ Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚

ΠŸΠΎΡ‚ΠΎΠΊ 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() буфСризуСтся построчно, ΠΏΠΎΡΡ‚ΠΎΠΌΡƒΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ , ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ любойсимвол, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с консоли.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Read() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ длясчитывания символа, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.// Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ символ, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹.using System;class KbIn { static void Main() { char ch; Console.Write("НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ β€” <ENTER>: "); ch = (char) Console.Read(); // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° char Console.WriteLine("Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: " + ch); }}

Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.НаТмитС ΠΊΠ»Π°Π²ΠΈΡˆΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ β€” <ENTER>: tΠ’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: t

ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ построчно Π²Π²ΠΎΠ΄, осущСствляСмый с консоли посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Read(), ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ досадным прСпятствиСм. Π’Π΅Π΄ΡŒ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши Π² ΠΏΠΎΡ‚ΠΎΠΊ Π²Π²ΠΎΠ΄Π° пСрСдаСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ символов ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, эти символы ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ Π±ΡƒΡ„Π΅Ρ€Π΅ Π΄ΠΎ Ρ‚Π΅Ρ…ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ считаны. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прилоТСниях ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡΡƒΠ΄Π°Π»ΡΡ‚ΡŒ эти символы (ΠΏΡƒΡ‚Π΅ΠΌ ΠΈΡ… считывания), ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, для чтСния Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символов Π±Π΅Π· построчнойбуфСризации, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ рассматриваСмым Π΄Π°Π»Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ 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. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Rea.dLine(), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉΠ² классС TextReader.// ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ строку// нСпосрСдствСнно ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° Console.In.using System;class ReadChars2 { static void Main() { string str; Console.WriteLine("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ нСсколько символов."); str = Console.In.ReadLine(); // Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadLine() класса TextReader Console.WriteLine("Π’Ρ‹ Π²Π²Π΅Π»ΠΈ: " + str); }}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadLine() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вызываСтся нСпосрСдствСнно для ΠΏΠΎΡ‚ΠΎΠΊΠ° Console.In. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли трСбуСтся доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠ² классС TextReader, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для ΠΏΠΎΡ‚ΠΎΠΊΠ° Console.In, Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReadKey()

Π’ состав срСды .NET Framework Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, опрСдСляСмый Π² классС ConsoleΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ нСпосрСдствСнно ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ с клавиатурысимволы Π±Π΅Π· построчной Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся ReadKey(). ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadKey() Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символ. И Π² этом случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ<Enter>. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadKey() позволяСт ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ вводс ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReadKey().static ConsoleKeyInfo ReadKey()static ConsoleKeyInfo ReadKey(bool intercept)

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° оТидаСтся Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши. Когда ΠΎΠ½ΠΎ происходит, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Π½Π° экран.Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ оТидаСтся Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши, ΠΈ Π·Π°Ρ‚Π΅ΠΌ возвращаСтся ввСдСнныйс ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символ. Но Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° intercept Ρ€Π°Π²Π½ΠΎ true, Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ символ Π½Π΅ отобраТаСтся. А Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° intercept Ρ€Π°Π²Π½ΠΎ false,Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ символ отобраТаСтся.

ΠœΠ΅Ρ‚ΠΎΠ΄ ReadKey() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Ρ‚ΠΈΠΏΠ°ConsoleKeyInfo, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой структуру, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ…Π½ΠΈΠΆΠ΅ свойств, доступных Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния.char KeyCharConsoleKey KeyConsoleModifiers Modifiers

Бвойство KeyChar содСрТит эквивалСнт char Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символа,свойство Key β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· пСрСчислСния ConsoleKey всСх клавиш Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅,Π° свойство Modifiers β€” описаниС ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… клавиш (, ΠΈΠ»ΠΈ ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π½Π°ΠΆΠ°Ρ‚Ρ‹, Ссли это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π»ΠΎ мСсто, ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ клавиши прСдставлСны впСрСчислСнии ConsoleModifiers ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ значСниями: Control, Shift ΠΈ Alt.Π’ свойствС Modifiers ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π°ΠΆΠ°Ρ‚Ρ‹Ρ… ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… клавиш.

Π“Π»Π°Π²Π½ΠΎΠ΅ прСимущСство ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ReadKey() Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ прСдоставляСтсрСдства для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ этотввод Π½Π΅ буфСризуСтся построчно. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π² дСйствии, Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.// Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ символы, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ с консоли, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadKey().using System;class ReadKeys { static void Main() { ConsoleKeyInfo keypress; Console.WriteLine("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ нСсколько символов, " + "Π° ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ - <Q>."); do { keypress = Console.ReadKey(); // ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π°ΠΆΠ°Ρ‚Ρ‹Ρ… ΠΊΠ»Π°Π²ΠΈΡˆΠ°Ρ… Console.WriteLine(" Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: " + keypress.KeyChar); // ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… клавиш. if((ConsoleModifiers.Alt & keypress.Modifiers) != 0) Console.WriteLine("НаТата клавиша <Alt>."); if((ConsoleModifiers.Control & keypress.Modifiers) != 0) Console.WriteLine("НаТата клавиша <Control>."); if((ConsoleModifiers.Shift & keypress.Modifiers) != 0) Console.WriteLine("НаТата клавиша <Shift>."); } while(keypress.KeyChar != 'Q'); }}

Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.Π’Π²Π΅Π΄ΠΈΡ‚Π΅ нСсколько символов, Π° ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ - <Q>.Π° Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: Π°b Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: bd Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: dА Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: АНаТата клавиша <Shift>.Π’ Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: ВНаТата клавиша <Shift>.Π‘ Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: БНаТата клавиша <Shift>.β€’ Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: ‒НаТата клавиша <Control>.Q Π’Ρ‹ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ: QНаТата клавиша <Shift>.

Как слСдуСт ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° наТимаСтся клавиша, ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadKey() Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ символ. Π­Ρ‚ΠΈΠΌΠΎΠ½ отличаСтся ΠΎΡ‚ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π²ΡˆΠ΅Π³ΠΎΡΡ Ρ€Π°Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Read(), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Π²ΠΎΠ΄ выполняСтсяс построчной Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли трСбуСтся Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈΠ½Π° Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Ρ‚ΠΎ рСкомСндуСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ReadKey().Π—Π°ΠΏΠΈΡΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° консоль