C#에서는 Console 클래스를 통해 사용자 입력을 받을 수 있으며, 대표적인 메서드로 Read(), ReadKey(), ReadLine()이 있습니다. 이 세 메서드는 모두 표준 입력 스트림에서 데이터를 읽지만, 반환 형식과 동작 방식에서 중요한 차이가 있습니다.
1. Read() 메서드
Console.Read()는 표준 입력 스트림에서 다음 문자 하나를 읽어 해당 문자의 유니코드 코드 값을 int형(정수)으로 반환합니다. 사용자가 Enter 키를 눌러야 입력이 처리되며, 더 이상 읽을 문자가 없으면 -1을 반환합니다.
int z = Console.Read(); Console.WriteLine(z); // 입력한 문자의 아스키(유니코드) 코드 값 출력
예를 들어 'A'를 입력하면 문자 자체가 아니라 코드 값인 65가 출력됩니다.
2. ReadKey() 메서드
Console.ReadKey()는 표준 입력 스트림에서 단일 키 입력만 즉시 읽어들입니다. 사용자가 키를 누르는 순간 바로 반응하기 때문에 "아무 키나 눌러 계속하세요"와 같은 화면 일시 정지 용도로 자주 사용됩니다. 반환 형식은 ConsoleKeyInfo 객체로, 눌린 키, 보조 키(Shift, Ctrl 등) 정보를 함께 제공합니다.
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine($"\n눌린 키: {key.Key}");
3. ReadLine() 메서드
Console.ReadLine()은 표준 입력 스트림에서 한 줄 전체(Enter 키를 누를 때까지의 모든 문자)를 읽어 string형(문자열)으로 반환합니다. 여러 글자를 입력받거나 숫자 입력을 받아 변환할 때 가장 널리 사용되는 메서드입니다.
string name = Console.ReadLine();
Console.WriteLine($"안녕하세요, {name}님!");
세 메서드 비교 요약
| 메서드 | 읽는 단위 | 반환 형식 | 주요 용도 |
|---|---|---|---|
| Read() | 문자 1개 | int | 문자의 코드 값 확인 |
| ReadKey() | 키 입력 1회 | ConsoleKeyInfo | 화면 일시 정지, 키 판별 |
| ReadLine() | 한 줄 전체 | string | 일반적인 사용자 입력 |
예제 코드
using System;
class Program {
static void Main() {
int x = 10;
Console.WriteLine(x);
Console.Write("\n계속하려면 아무 키나 누르세요... ");
Console.ReadKey();
}
}
실행 결과
10 계속하려면 아무 키나 누르세요...
정리하면, Read()는 문자 하나를 int로, ReadKey()는 키 입력 하나를 즉시 ConsoleKeyInfo로, ReadLine()은 한 줄 전체를 string으로 반환한다는 점이 핵심 차이입니다. 프로그램의 목적에 맞게 적절한 메서드를 선택해 사용하면 됩니다.