HOWTO · Csharp

C#의 콘솔에서 정수 읽기

C#의 콘솔에서 정수 값을 읽는 데 사용할 수있는 세 가지 주요 메서드는 int.Parse(), int.TryParse() 및 Convert.ToInt32() 메서드입니다.

이 페이지의 내용

C# 콘솔에서 정수를 읽으려면 먼저 Console.ReadLine()으로 한 줄을 읽은 다음, 그 텍스트를 정수로 변환합니다. 사용자가 예상하지 못한 텍스트를 입력할 수 있다면 int.TryParse()를 사용하세요. 이 메서드는 변환 성공 여부를 알려 주므로 일반적인 잘못된 입력을 예외 처리 대신 정상적인 제어 흐름으로 다룰 수 있습니다. 이 가이드에서는 줄 단위 입력에 사용하는 int.Parse(), int.TryParse(), Convert.ToInt32()를 비교합니다.

콘솔에서 int.Parse()로 정수 읽기

int.Parse()는 유효한 32비트 정수가 들어 있는 문자열을 int로 변환합니다. 입력이 신뢰할 수 있거나 주변 코드에서 변환 오류를 처리하는 경우 간결하게 사용할 수 있습니다.

다음은 한 줄을 읽어 변환한 값을 출력하는 완전한 프로그램입니다.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        Console.SetIn(new StringReader("42"));
        Console.Write("Enter an integer: ");
        string input = Console.ReadLine();
        int value = int.Parse(input);
        Console.WriteLine($"You entered: {value}");
    }
}
Enter an integer: You entered: 42

정수가 아닌 텍스트를 변환하면 FormatException이 발생하고, Int32 범위를 벗어난 값은 OverflowException을 발생시킵니다. 실제 콘솔에서 입력 스트림이 한 줄을 읽기 전에 끝나면 Console.ReadLine()은 null을 반환합니다. 이 값을 int.Parse()에 전달하면 ArgumentNullException이 발생하므로 입력 종료가 발생할 수 있는 경우 먼저 null인지 확인하세요. 예제를 독립적으로 실행할 수 있도록 StringReader를 사용해 42를 입력합니다.

콘솔에서 int.TryParse()로 정수 읽기

대화형 입력에서는 변환 성공 여부를 일반적인 제어 흐름에서 처리할 수 있으므로 대개 int.TryParse()가 가장 명확한 선택입니다. 텍스트가 범위 내의 정수를 나타내면 true를 반환하고 변환된 숫자를 out 변수에 할당합니다. 그렇지 않으면 false를 반환하고 해당 변수에 기본값인 0을 할당합니다. 숫자를 사용하기 전에 반환된 Boolean 값을 확인하세요.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        Console.SetIn(new StringReader("42"));
        Console.Write("Enter an integer: ");
        string input = Console.ReadLine();
        int value;

        if (int.TryParse(input, out value))
        {
            Console.WriteLine($"You entered: {value}");
        }
        else
        {
            Console.WriteLine("Enter a whole number within the Int32 range.");
        }
    }
}
Enter an integer: You entered: 42

숫자가 아닌 텍스트, 입력 종료 또는 int 범위를 벗어난 값에 대해 TryParse는 false를 반환하므로 프로그램은 else 분기의 메시지를 출력합니다. 프롬프트와 구문 분석 확인을 반복문에 넣으면 사용자가 다시 입력할 수 있습니다. 이 예제는 한 번 응답한 뒤 종료합니다. 예제를 독립적으로 실행할 수 있도록 여기서는 StringReader가 42를 제공합니다.

콘솔에서 Convert.ToInt32()로 정수 읽기

Convert.ToInt32()는 Console.ReadLine()이 반환한 줄을 변환하는 또 다른 방법입니다. 숫자 텍스트를 입력하면 int.Parse()와 같은 int 값을 만듭니다. 임의의 텍스트를 안전하게 처리해 주는 것은 아닙니다. 숫자가 아닌 텍스트는 FormatException을 발생시킬 수 있고, Int32 범위를 벗어난 값은 OverflowException을 발생시킬 수 있습니다. null 문자열은 예외적인 경우입니다. Convert.ToInt32((string)null)은 0을 반환하지만 int.Parse(null)은 ArgumentNullException을 발생시킵니다.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        Console.SetIn(new StringReader("42"));
        Console.Write("Enter an integer: ");
        string input = Console.ReadLine();
        int value = Convert.ToInt32(input);
        Console.WriteLine($"You entered: {value}");
    }
}
Enter an integer: You entered: 42

사용자가 입력하는 값에 일반적인 검증 흐름이 필요하다면 int.TryParse()를 선택하세요. 변환 오류를 호출자 쪽에서 처리해야 한다면 int.Parse() 또는 Convert.ToInt32()를 사용할 수 있습니다. 이 콘솔 예제에서는 세 메서드 모두 Console.ReadLine()으로 입력을 읽습니다. 세 메서드는 변환 결과와 특수 입력값을 처리하는 방식이 다릅니다.