C#에서 UInt16.MaxValue 필드는 16비트 부호 없는 정수(ushort)가 가질 수 있는 최대값을 나타냅니다. 이 값은 항상 65535로 고정되어 있으며, 변수의 값 범위를 검증하거나 안전하게 형식을 변환할 때 매우 유용하게 활용됩니다.
문법(Syntax)
UInt16.MaxValue 필드의 선언 구문은 다음과 같습니다.
public const ushort MaxValue = 65535;
예제 1: 기본 사용 방법
다음 예제는 ushort 변수의 해시 코드, 형식 코드(TypeCode)와 함께 UInt16.MaxValue 값을 출력하는 방법을 보여줍니다.
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("Maximum Value = "+ UInt16.MaxValue);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value1 = 23 Value2 = 0 HashCode for value1 = 23 HashCode for value2 = 0 Are they equal? = False TypeCode for val1 = UInt16 TypeCode for val2 = UInt16 Maximum Value = 65535
예제 2: 값 범위 검증 후 형식 변환
다음 예제는 ulong 배열의 각 요소가 ushort 범위(UInt16.MinValue ~ UInt16.MaxValue) 내에 있는지 확인한 뒤, 범위 내에 있으면 Convert.ToUInt16()으로 변환하고 그렇지 않으면 변환이 불가능하다는 메시지를 출력합니다.
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
정리
UInt16.MaxValue는 상수(const)이므로 런타임 오버헤드 없이 사용할 수 있으며, 8998처럼 ushort 범위 내의 값은 성공적으로 변환되지만 65535를 초과하는 큰 값은 변환에 실패함을 확인할 수 있습니다. 이처럼 UInt16.MinValue와 MaxValue를 함께 활용하면 데이터 손실이나 오버플로우 없이 안전한 형식 변환 로직을 작성할 수 있습니다.