Console 类

表示控制台应用程序的标准输入流、输出流和错误流。无法继承此类。

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public NotInheritable Class Console
用法
可对静态类的成员直接进行访问,无需类的实例。
public static class Console
public ref class Console abstract sealed
public final class Console
public final class Console

备注

控制台是一个操作系统窗口,用户可在其中通过计算机键盘输入文本,并从计算机终端读取文本输出,从而与操作系统或基于文本的控制台应用程序进行交互。例如,在 Windows 中控制台称为命令提示窗口,可以接受 MS-DOS 命令。Console 类对从控制台读取字符并向控制台写入字符的应用程序提供基本支持。

控制台 I/O 流

控制台应用程序启动时,操作系统会自动将三个 I/O 流与控制台关联。您的应用程序可以从标准输入流读取用户输入;将正常数据写入到标准输出流;以及将错误数据写入到标准错误输出流。这些流会作为 InOutError 属性的值提供给应用程序。

默认情况下,In 属性的值为 System.IO.TextReader 对象,而 OutError 属性的值为 System.IO.TextWriter 对象。不过,您可以将这些属性设置为不表示控制台的流;例如,可以将这些属性设置为表示文件的流。使用这些流的 I/O 操作是同步的,这意味着多个线程均可读取或写入这些流。

基础流定向到控制台时 Console 类成员能够正常工作,但是,如果将基础流重定向(如重定向到一个文件),则该类的成员可能会引发异常。因此,如果要将标准流重定向,请在应用程序中捕获 System.IO.IOException

显式调用 InOutError 属性表示的流对象的成员有时十分有用。例如,在默认情况下,WriteLine 方法将后面带默认行终止字符串的数据写入标准输出流;即,数据后面带回车符和换行符(“\r\n”)。但是,Console 类不提供将数据写入标准错误输出流的方法,也不提供更改写入该流的数据的行终止字符串的属性。

您可以通过将 OutError 属性的 TextWriter.NewLine 属性设置为其他行终止字符串来解决这个问题。例如,C# 语句 Console.Error.NewLine = "\r\n\r\n"; 将标准错误输出流的行终止字符串设置为两个回车符和换行符序列。然后,您可以显式调用错误输出流对象的 WriteLine 方法,在 C# 语句中为 Console.Error.WriteLine();

屏幕缓冲区和控制台窗口

控制台有两个关系紧密的功能,也就是屏幕缓冲区和控制台窗口。文本实际上是从控制台拥有的流进行读取和写入的,但看起来像是在控制台拥有的一个称为屏幕缓冲区的区域中进行读取和写入的。屏幕缓冲区是控制台的一个属性,以由行和列组成的矩形网格的形式进行组织,其中每个网格交叉位置(字符单元格)都可包含一个字符。每个字符都有自己的前景色,而每个字符单元格都有自己的背景色。

屏幕缓冲区可通过称为控制台窗口的矩形区域查看。控制台窗口是控制台的另一个属性;它不是控制台本身,控制台本身是一个操作系统窗口。控制台窗口也以行和列的形式进行组织,其大小与屏幕缓冲区相同或者更小,该窗口可进行移动以查看基础屏幕缓冲区的不同区域。如果屏幕缓冲区比控制台窗口大,控制台会自动显示滚动条,以使控制台窗口可以在屏幕缓冲区上重新定位。

光标指示屏幕缓冲区中当前正在读取或写入文本的位置。可以隐藏或显示光标,光标的高度可以更改。如果光标可见,控制台窗口的位置会自动移动,以便总是能够看到光标。

字符单元格在屏幕缓冲区中的坐标原点为左上角,光标和控制台窗口的位置相对于该原点进行计算。位置通过从零开始的索引指定;也就是说,将最上面的行指定为行 0,将最左边的列指定为列 0。行索引和列索引的最大值为 Int16.MaxValue

功能

Console 类提供用于从控制台读取单个字符或整行的方法;该类还提供若干写入方法,可将值类型的实例、字符数组以及对象集自动转换为格式化或未格式化的字符串,然后将该字符串(可选择是否尾随一个行终止字符串)写入控制台。Console 类还提供一些用以执行以下操作的方法和属性:获取或设置屏幕缓冲区、控制台窗口和光标的大小;更改控制台窗口和光标的位置;移动或清除屏幕缓冲区中的数据;更改前景色和背景色;更改显示在控制台标题栏中的文本;以及播放提示音。

示例

此代码示例演示如何从标准输入流与输出流读取和向它们写入。请注意,可以使用 SetInSetOut 方法重定向这些流。

Public Shared Sub Main()
    Console.Write("Hola ")
    Console.WriteLine("Mundo!")
    Console.WriteLine("What is your name: ")
    Dim name As String = Console.ReadLine()
    Console.Write("Buenos Dias, ")
    Console.Write(name)
    Console.WriteLine("!")
End Sub 'Main
public static void Main(string[] args) {
    Console.Write("Hola ");
    Console.WriteLine("Mundo!");
    Console.WriteLine("What is your name: ");
    String name = Console.ReadLine();
    Console.Write("Buenos Dias, ");
    Console.Write(name);
    Console.WriteLine("!");
}
int main()
{
   Console::Write( L"Hola " );
   Console::WriteLine( L"Mundo!" );
   Console::WriteLine( L"What is your name: " );
   String^ name = Console::ReadLine();
   Console::Write( L"Buenos Dias, " );
   Console::Write( name );
   Console::WriteLine( L"!" );
}
public static void main(String[] args)
{
    Console.Write("Hola ");
    Console.WriteLine("Mundo!");
    Console.WriteLine("What is your name: ");
    String name = Console.ReadLine();
    Console.Write("Buenos Dias, ");
    Console.Write(name);
    Console.WriteLine("!");
} //main
Console.Write("Hola ");
Console.WriteLine("Mundo!");
Console.WriteLine("What is your name: ");
var name : String = Console.ReadLine();
Console.Write("Buenos Dias, ");
Console.Write(name);
Console.WriteLine("!");

继承层次结构

System.Object
  System.Console

线程安全

该类型对于多线程操作是安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Console 成员
System 命名空间