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를 이용한 범위 검사를 습관화하면 런타임 오버플로우 예외를 효과적으로 예방할 수 있습니다.