Console.Read 方法

定义

从标准输入流读取下一个字符。Reads the next character from the standard input stream.

public:
 static int Read();
public static int Read ();
static member Read : unit -> int
Public Shared Function Read () As Integer

返回

输入流中的下一个字符;如果当前没有更多的字符可供读取,则为负一 (-1)。The next character from the input stream, or negative one (-1) if there are currently no more characters to be read.

异常

出现 I/O 错误。An I/O error occurred.

示例

下面的示例演示 Read 方法。The following example demonstrates the Read method.

// This example demonstrates the Console.Read() method.
using namespace System;
int main()
{
   String^ m1 = "\nType a string of text then press Enter. "
   "Type '+' anywhere in the text to quit:\n";
   String^ m2 = "Character '{0}' is hexadecimal 0x{1:x4}.";
   String^ m3 = "Character     is hexadecimal 0x{0:x4}.";
   Char ch;
   int x;
   
   //
   Console::WriteLine( m1 );
   do
   {
      x = Console::Read();
      try
      {
         ch = Convert::ToChar( x );
         if ( Char::IsWhiteSpace( ch ) )
         {
            Console::WriteLine( m3, x );
            if ( ch == 0x0a )
                        Console::WriteLine( m1 );
         }
         else
                  Console::WriteLine( m2, ch, x );
      }
      catch ( OverflowException^ e ) 
      {
         Console::WriteLine( "{0} Value read = {1}.", e->Message, x );
         ch = Char::MinValue;
         Console::WriteLine( m1 );
      }

   }
   while ( ch != '+' );
}

/*
This example produces the following results:

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

The quick brown fox.
Character 'T' is hexadecimal 0x0054.
Character 'h' is hexadecimal 0x0068.
Character 'e' is hexadecimal 0x0065.
Character     is hexadecimal 0x0020.
Character 'q' is hexadecimal 0x0071.
Character 'u' is hexadecimal 0x0075.
Character 'i' is hexadecimal 0x0069.
Character 'c' is hexadecimal 0x0063.
Character 'k' is hexadecimal 0x006b.
Character     is hexadecimal 0x0020.
Character 'b' is hexadecimal 0x0062.
Character 'r' is hexadecimal 0x0072.
Character 'o' is hexadecimal 0x006f.
Character 'w' is hexadecimal 0x0077.
Character 'n' is hexadecimal 0x006e.
Character     is hexadecimal 0x0020.
Character 'f' is hexadecimal 0x0066.
Character 'o' is hexadecimal 0x006f.
Character 'x' is hexadecimal 0x0078.
Character '.' is hexadecimal 0x002e.
Character     is hexadecimal 0x000d.
Character     is hexadecimal 0x000a.

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

^Z
Value was either too large or too small for a character. Value read = -1.

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

+
Character '+' is hexadecimal 0x002b.

*/
// This example demonstrates the Console.Read() method.
using System;

class Sample 
{
    public static void Main() 
    {
    string m1 = "\nType a string of text then press Enter. " +
                "Type '+' anywhere in the text to quit:\n";
    string m2 = "Character '{0}' is hexadecimal 0x{1:x4}.";
    string m3 = "Character     is hexadecimal 0x{0:x4}.";
    char ch;
    int x;
//
    Console.WriteLine(m1);
    do  
        {
        x = Console.Read();
        try 
            {
            ch = Convert.ToChar(x);
            if (Char.IsWhiteSpace(ch))
               {
               Console.WriteLine(m3, x);
               if (ch == 0x0a) 
                   Console.WriteLine(m1);
               }
            else
                {
                    Console.WriteLine(m2, ch, x);
                }
            }
        catch (OverflowException e) 
            {
            Console.WriteLine("{0} Value read = {1}.", e.Message, x);
            ch = Char.MinValue;
            Console.WriteLine(m1);
            }
        } while (ch != '+');
    }
}
/*
This example produces the following results:

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

The quick brown fox.
Character 'T' is hexadecimal 0x0054.
Character 'h' is hexadecimal 0x0068.
Character 'e' is hexadecimal 0x0065.
Character     is hexadecimal 0x0020.
Character 'q' is hexadecimal 0x0071.
Character 'u' is hexadecimal 0x0075.
Character 'i' is hexadecimal 0x0069.
Character 'c' is hexadecimal 0x0063.
Character 'k' is hexadecimal 0x006b.
Character     is hexadecimal 0x0020.
Character 'b' is hexadecimal 0x0062.
Character 'r' is hexadecimal 0x0072.
Character 'o' is hexadecimal 0x006f.
Character 'w' is hexadecimal 0x0077.
Character 'n' is hexadecimal 0x006e.
Character     is hexadecimal 0x0020.
Character 'f' is hexadecimal 0x0066.
Character 'o' is hexadecimal 0x006f.
Character 'x' is hexadecimal 0x0078.
Character '.' is hexadecimal 0x002e.
Character     is hexadecimal 0x000d.
Character     is hexadecimal 0x000a.

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

^Z
Value was either too large or too small for a character. Value read = -1.

Type a string of text then press Enter. Type '+' anywhere in the text to quit:

+
Character '+' is hexadecimal 0x002b.

*/
' This example demonstrates the Console.Read() method.
Class Sample
   Public Shared Sub Main()
      Dim m1 As String = _
                vbCrLf & _
                "Type a string of text then press Enter. " & _
                "Type '+' anywhere in the text to quit:" & _
                vbCrLf
      Dim m2 As String = "Character '{0}' is hexadecimal 0x{1:x4}."
      Dim m3 As String = "Character     is hexadecimal 0x{0:x4}."
      Dim ch As Char
      Dim x As Integer
      '
      Console.WriteLine(m1)
      Do
         x = Console.Read()
         Try
            ch = Convert.ToChar(x)
            If Char.IsWhiteSpace(ch) Then
               Console.WriteLine(m3, x)
               If ch = vbLf Then
                  Console.WriteLine(m1)
               End If
            Else
               Console.WriteLine(m2, ch, x)
            End If
         Catch e As OverflowException
            Console.WriteLine("{0} Value read = {1}.", e.Message, x)
            ch = Char.MinValue
            Console.WriteLine(m1)
         End Try
      Loop While ch <> "+"c
   End Sub
End Class
'
'This example produces the following results:
'
'Type a string of text then press Enter. Type '+' anywhere in the text to quit:
'
'The quick brown fox.
'Character 'T' is hexadecimal 0x0054.
'Character 'h' is hexadecimal 0x0068.
'Character 'e' is hexadecimal 0x0065.
'Character     is hexadecimal 0x0020.
'Character 'q' is hexadecimal 0x0071.
'Character 'u' is hexadecimal 0x0075.
'Character 'i' is hexadecimal 0x0069.
'Character 'c' is hexadecimal 0x0063.
'Character 'k' is hexadecimal 0x006b.
'Character     is hexadecimal 0x0020.
'Character 'b' is hexadecimal 0x0062.
'Character 'r' is hexadecimal 0x0072.
'Character 'o' is hexadecimal 0x006f.
'Character 'w' is hexadecimal 0x0077.
'Character 'n' is hexadecimal 0x006e.
'Character     is hexadecimal 0x0020.
'Character 'f' is hexadecimal 0x0066.
'Character 'o' is hexadecimal 0x006f.
'Character 'x' is hexadecimal 0x0078.
'Character '.' is hexadecimal 0x002e.
'Character     is hexadecimal 0x000d.
'Character     is hexadecimal 0x000a.
'
'Type a string of text then press Enter. Type '+' anywhere in the text to quit:
'
'^Z
'Value was either too large or too small for a character. Value read = -1.
'
'Type a string of text then press Enter. Type '+' anywhere in the text to quit:
'
'+
'Character '+' is hexadecimal 0x002b.
'

注解

当你键入输入字符时,Read 方法会阻止其返回;当你按 Enter 键时,它将终止。The Read method blocks its return while you type input characters; it terminates when you press the Enter key. 按 Enter 会将平台相关的行终止序列附加到输入(例如,Windows 追加一个回车换行符序列)。Pressing Enter appends a platform-dependent line termination sequence to your input (for example, Windows appends a carriage return-linefeed sequence). Read 方法的后续调用每次检索输入一个字符。Subsequent calls to the Read method retrieve your input one character at a time. 检索最后一个字符后,Read 会再次阻止其返回,并重复周期。After the final character is retrieved, Read blocks its return again and the cycle repeats.

重要

ReadLine 方法或 KeyAvailable 属性和 ReadKey 方法比使用 Read 方法更可取。The ReadLine method, or the KeyAvailable property and ReadKey method are preferable to using the Read method.

请注意,除非您执行下列操作之一,否则方法不会返回-1:Note that the method does not return -1 unless you perform one of the following actions:

  • 同时按 Control 修改键和 Z 控制台键(Ctrl + Z),这将指示文件尾条件。Simultaneously press the Control modifier key and Z console key (Ctrl+Z), which signals the end-of-file condition.

  • 按指示文件尾条件的等效键,例如 Windows 中的 F6 函数键。Press an equivalent key that signals the end-of-file condition, such as the F6 function key in Windows.

  • 将输入流重定向到具有实际文件尾字符的源(如文本文件)。Redirect the input stream to a source, such as a text file, that has an actual end-of-file character.

适用于

另请参阅