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

C# UInt16.MinValue 필드 완벽 정리 – 개념부터 예제까지

C#의 UInt16.MinValue 필드는 16비트 부호 없는 정수(ushort)가 가질 수 있는 최솟값을 나타냅니다. ushort 형식은 부호가 없는 정수이므로 표현할 수 있는 값의 범위는 0부터 65,535까지이며, 따라서 UInt16.MinValue의 값은 항상 0입니다.

문법(Syntax)

UInt16.MinValue 필드의 선언 구문은 다음과 같습니다.

public const ushort MinValue = 0;

이 필드는 const(상수)로 선언되어 있기 때문에 프로그램 실행 중에 값을 변경할 수 없으며, 별도의 인스턴스 생성 없이 클래스 이름으로 바로 접근할 수 있습니다.

예제 1 – UInt16.MinValue 기본 사용법

다음 예제는 UInt16.MinValue 필드를 활용하여 ushort 변수의 해시 코드, 동등성 비교, TypeCode 등을 함께 확인하는 방법을 보여줍니다.

using System;
public class Demo {
   public static void Main(){
      ushort val1 = 23;
      ushort 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("Minimum Value = "+ UInt16.MinValue);
   }
}

실행 결과

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

Value1 = 23
Value2 = 0
HashCode for value1 = 23
HashCode for value2 = 0
Are they equal? = False
TypeCode for val1 = UInt16
TypeCode for val2 = UInt16
Minimum Value = 0

출력 결과에서 볼 수 있듯이 두 변수의 값이 다르므로 Equals() 메서드의 결과는 False이며, UInt16.MinValue는 0으로 출력됩니다.

예제 2 – 범위 검사 후 안전하게 변환하기

UInt16.MinValue와 UInt16.MaxValue를 함께 사용하면, 다른 숫자 형식의 값이 ushort 범위 내에 있는지 검사한 뒤 안전하게 형변환할 수 있습니다. 이는 오버플로우 예외를 방지하는 실용적인 패턴입니다.

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

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다.

Converted: 8998
Not Possible
Not Possible

첫 번째 값인 8998은 ushort 범위(0~65,535) 안에 있으므로 성공적으로 변환되지만, 나머지 두 값은 범위를 초과하기 때문에 변환이 불가능하다는 메시지가 출력됩니다.

정리

UInt16.MinValue는 ushort 형식의 하한값인 0을 나타내는 상수 필드입니다. 단순히 최솟값을 확인하는 용도뿐만 아니라, 위 예제처럼 값의 유효 범위를 검사한 후 형변환을 수행할 때 유용하게 활용할 수 있습니다. 특히 외부 데이터나 큰 숫자 형식의 값을 ushort로 변환할 때는 MinValue와 MaxValue를 이용한 범위 검사를 습관화하면 런타임 오버플로우 예외를 효과적으로 예방할 수 있습니다.