다음을 통해 공유


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 스트림과 콘솔을 연결합니다. 응용 프로그램은 표준 입력 스트림에서 사용자 입력을 읽고 표준 출력 스트림에 정상 데이터를 쓰며 표준 오류 출력 스트림에 오류 데이터를 쓸 수 있습니다. 이러한 스트림은 해당 응용 프로그램에 In, OutError 속성의 값으로 표시됩니다.

In 속성의 기본값은 System.IO.TextReader 개체이며 OutError 속성의 기본값은 System.IO.TextWriter 개체입니다. 그러나 파일을 나타내는 스트림과 같이 콘솔을 나타내지 않는 스트림에도 이러한 속성을 설정할 수 있습니다. 이러한 스트림을 사용하는 I/O 작업은 동기화되므로 스트림에서 여러 스레드를 읽거나 쓸 수 있습니다.

내부 스트림이 콘솔에 디렉션될 때 정상적으로 작동하는 Console 클래스 멤버라도 해당 스트림이 파일과 같은 대상에 리디렉션되는 경우 예외를 throw할 수 있습니다. 따라서 표준 스트림을 리디렉션하는 경우 응용 프로그램에서 System.IO.IOException을 catch하도록 프로그래밍해야 합니다.

경우에 따라 In, OutError 속성으로 표시되는 스트림 개체의 멤버를 명시적으로 호출하는 것이 더 좋습니다. 예를 들어, 기본적으로 WriteLine 메서드를 사용하면 캐리지 리턴 및 줄 바꿈("\r\n") 등의 기본 줄 종결 문자열이 뒤따르는 데이터를 표준 출력 스트림에 쓸 수 있습니다. 그러나 Console 클래스는 표준 오류 출력 스트림에 데이터를 쓰는 메서드나 해당 스트림에 쓴 데이터의 줄 종결 문자열을 변경하는 속성을 제공하지 않습니다.

이 문제는 Out 또는 Error 속성의 TextWriter.NewLine 속성을 다른 줄 종결 문자열로 설정하여 해결할 수 있습니다. 예를 들어, C# 문 Console.Error.NewLine = "\r\n\r\n";에서는 표준 오류 출력 스트림에 대한 줄 종결 문자열을 두 개의 캐리지 리턴과 줄 바꿈 시퀀스로 설정합니다. 그러면 C# 문 Console.Error.WriteLine();과 같이 오류 출력 스트림 개체의 WriteLine 메서드를 명시적으로 호출할 수 있습니다.

화면 버퍼 및 콘솔 창

콘솔에서 서로 밀접한 관련이 있는 두 기능이 화면 버퍼와 콘솔 창입니다. 실제로는 콘솔이 소유하는 스트림에서 텍스트를 실제로 읽거나 쓰지만 사용자에게는 콘솔 소유 영역인 화면 버퍼에서 읽거나 쓰는 것처럼 보입니다. 화면 버퍼는 콘솔의 한 특성으로서, 각 모눈 교차 부분 또는 문자 셀에 문자를 포함할 수 있는 행과 열의 사각형 모눈으로 구성됩니다. 각 문자에는 고유한 전경색이 있고 각 문자 셀에는 고유한 배경색이 있습니다.

화면 버퍼는 콘솔 창이라는 사각형 영역에 표시됩니다. 콘솔 창은 콘솔의 다른 특성으로, 운영 체제 창인 콘솔 자체가 아닙니다. 콘솔 창은 행과 열로 구성되며 크기가 화면 버퍼와 같거나 더 작기 때문에 창을 이동하면 내부 화면 버퍼의 다른 영역을 볼 수 있습니다. 화면 버퍼가 콘솔 창보다 큰 경우 콘솔에는 자동으로 스크롤 막대가 표시되어 화면 버퍼 영역을 볼 수 있도록 콘솔 창의 위치가 변경될 수 있습니다.

커서는 현재 텍스트를 읽거나 쓰는 화면 버퍼 위치를 나타냅니다. 커서는 숨기거나 표시할 수 있으며 높이도 변경할 수 있습니다. 커서를 표시하도록 설정한 경우에는 커서가 항상 보이도록 콘솔 창 위치가 자동으로 이동됩니다.

화면 버퍼에서 문자 셀 좌표의 원점은 왼쪽 위 모퉁이이며 커서 및 콘솔 창의 위치는 해당 원점에 상대적입니다. 위치를 지정하려면 인덱스(0부터 시작)를 사용합니다. 즉, 맨 위 행을 행 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 네임스페이스