Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Int16.MaxValue 필드 완벽 가이드: 개념부터 실전 예제까지

C#의 Int16.MaxValue 필드는 Int16(16비트 부호 있는 정수) 타입이 가질 수 있는 최댓값을 나타냅니다. 이 값은 상수로 정의되어 있으며, short 형 변수가 저장할 수 있는 가장 큰 숫자인 32767을 의미합니다.

Int16은 16비트 부호 있는 정수로, 표현 가능한 범위는 -32768부터 32767까지입니다. 따라서 MaxValue 필드는 이 범위의 상한선을 확인하거나, 값 변환 시 오버플로우를 방지하는 유효성 검사에 유용하게 활용됩니다.

구문(Syntax)

Int16.MaxValue 필드의 구문은 다음과 같습니다.

public const short MaxValue = 32767;

MaxValue는 const 상수이므로 런타임에 값을 변경할 수 없으며, 항상 32767을 반환합니다.

예제 1: 기본 사용법

다음 예제를 통해 Int16.MaxValue 필드의 실제 동작을 확인해 보겠습니다.

using System;
public class Demo {
    public static void Main(){
        short val1 = 23;
        short val2 = 0;
        Console.WriteLine("Value1 = "+val1);
        Console.WriteLine("Value2 = "+val2);
        Console.WriteLine("HashCode for value1 = "+val1.GetHashCode());
        Console.WriteLine("HashCode for value2 = "+val2.GetHashCode());
        Console.WriteLine("Are they equal? = "+(val1.Equals(val2)));
        TypeCode type1 = val1.GetTypeCode();
        TypeCode type2 = val2.GetTypeCode();
        Console.WriteLine("TypeCode for val1 = "+type1);
        Console.WriteLine("TypeCode for val2 = "+type2);
        Console.WriteLine("Maximum Value = "+ Int16.MaxValue);
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

Value1 = 23
Value2 = 0
HashCode for value1 = 1507351
HashCode for value2 = 0
Are they equal? = False
TypeCode for val1 = Int16
TypeCode for val2 = Int16
Maximum Value = 32767

출력 결과에서 확인할 수 있듯이, Int16.MaxValue는 정확히 32767을 반환합니다. 또한 GetHashCode()와 GetTypeCode() 메서드를 통해 각 값의 해시 코드와 타입 정보도 함께 확인할 수 있습니다.

예제 2: 값 변환 시 범위 검사 활용

Int16.MaxValue는 long 같은 더 큰 데이터 타입의 값을 short로 변환하기 전에 유효성을 검사할 때 특히 유용합니다. 다음 예제를 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(){
        long[]val = {8998, -899898778, 878787878, -20};
        short res;
        foreach(long a in val){
            if(a >= Int16.MinValue && a <= Int16.MaxValue) {
                res = Convert.ToInt16(a);
                Console.WriteLine("Converted: "+res);
            } else {
                Console.WriteLine("Not Possible");
            }
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

Converted: 8998
Not Possible
Not Possible
Converted: -20

이 예제에서는 각 long 값을 Int16.MinValue와 Int16.MaxValue 사이의 범위인지 검사한 후 변환을 수행합니다. 8998과 -20은 short 범위 내에 있으므로 성공적으로 변환되지만, -899898778과 878787878은 범위를 벗어나므로 "Not Possible"이 출력됩니다.

정리

Int16.MaxValue 필드는 다음과 같은 경우에 활용하면 좋습니다.

  • short 변수에 저장 가능한 최댓값 확인이 필요할 때
  • 더 큰 정수 타입(long, int 등)을 short로 변환하기 전 오버플로우 방지 검사를 수행할 때
  • 코드에서 매직 넘버 32767 대신 가독성 높은 상수를 사용하고 싶을 때

이처럼 Int16.MaxValue는 안전한 타입 변환과 범위 검증을 위한 필수적인 도구입니다. 짝을 이루는 Int16.MinValue(-32768)와 함께 사용하면 더욱 견고한 코드를 작성할 수 있습니다.