UInt16 구조체란?
UInt16 구조체는 C#에서 16비트 부호 없는 정수(unsigned integer)를 나타내는 값 형식입니다. 저장할 수 있는 값의 범위는 최소 0부터 최대 65,535까지로, 음수는 포함되지 않습니다.
이번 글에서는 UInt16 구조체가 제공하는 대표적인 메서드인 CompareTo()와 Equals()를 예제 코드와 함께 자세히 살펴보겠습니다.
UInt16.CompareTo() 메서드
C#의 UInt16.CompareTo() 메서드는 현재 인스턴스를 지정된 객체 또는 UInt16 값과 비교한 후, 두 값의 상대적 크기를 나타내는 정수를 반환합니다.
구문
public int CompareTo(object val); public int CompareTo(ushort val);
첫 번째 구문의 매개변수 val은 비교 대상이 되는 객체이며, 두 번째 구문의 매개변수 val은 비교할 16비트 부호 없는 정수입니다.
반환 값은 다음과 같이 해석할 수 있습니다.
- 0: 현재 인스턴스가 비교 대상 값과 같은 경우
- 0 미만: 현재 인스턴스가 비교 대상 값보다 작은 경우
- 0 초과: 현재 인스턴스가 비교 대상 값보다 큰 경우
예제 1: ushort 값끼리 비교
아래 예제는 UInt16.CompareTo() 메서드를 사용해 두 개의 ushort 값을 비교하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main(){
ushort val1 = 25;
ushort val2 = 55;
int res = val1.CompareTo(val2);
Console.WriteLine("Return value (comparison) = "+res);
if (res > 0)
Console.WriteLine("val1 > val2");
else if (res < 0)
Console.WriteLine("val1 < val2");
else
Console.WriteLine("val=val2");
}
}출력 결과
Return value (comparison) = -30 val1 < val2
25와 55를 비교했기 때문에 반환 값이 -30으로, val1이 val2보다 작다는 것을 확인할 수 있습니다.
예제 2: object 타입과 비교
이번에는 object 타입으로 박싱된 값을 비교하는 예제입니다.
using System;
public class Demo {
public static void Main(){
ushort val1 = 25;
object val2 = (ushort)2;
int res = val1.CompareTo(val2);
Console.WriteLine("Return value (comparison) = "+res);
if (res > 0)
Console.WriteLine("val1 > val2");
else if (res < 0)
Console.WriteLine("val1 < val2");
else
Console.WriteLine("val=val2");
}
}출력 결과
Return value (comparison) = 23 val1 > val2
25에서 2를 뺀 결과인 23이 반환되어, val1이 val2보다 크다는 것을 알 수 있습니다.
UInt16.Equals() 메서드
C#의 UInt16.Equals() 메서드는 현재 인스턴스가 지정된 객체 또는 UInt16 값과 같은지 여부를 나타내는 불리언(Boolean) 값을 반환합니다.
구문
public override bool Equals(object ob); public bool Equals(ushort ob);
첫 번째 구문의 매개변수 ob는 현재 인스턴스와 비교할 객체이며, 두 번째 구문의 매개변수 ob는 현재 인스턴스와 비교할 16비트 부호 없는 정수입니다.
예제 1: 서로 다른 값 비교
두 개의 다른 ushort 값이 같은지 확인하는 예제입니다.
using System;
public class Demo {
public static void Main(){
ushort val1 = 52;
ushort val2 = 10;
bool res = val1.Equals(val2);
Console.WriteLine("Return value (comparison) = "+res);
if (res)
Console.WriteLine("val1 = val2");
else
Console.WriteLine("val1 != val2");
}
}출력 결과
Return value (comparison) = False val1 != val2
52와 10은 서로 다른 값이므로 False가 반환되었습니다.
예제 2: 같은 값 비교
이번에는 동일한 값을 가진 두 변수를 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(){
ushort val1 = 100;
ushort val2 = 100;
bool res = val1.Equals(val2);
Console.WriteLine("Return value (comparison) = "+res);
if (res)
Console.WriteLine("val1 = val2");
else
Console.WriteLine("val1 != val2");
}
}출력 결과
Return value (comparison) = True val1 = val2
두 변수 모두 100이라는 같은 값을 가지므로 True가 반환되었습니다.
마무리
UInt16 구조체는 0~65,535 범위의 부호 없는 정수를 다룰 때 유용하며, CompareTo() 메서드로 값의 크기를 비교하고 Equals() 메서드로 값의 동일 여부를 손쉽게 확인할 수 있습니다. 두 메서드 모두 오버로드를 통해 object 타입과 ushort 타입 각각과의 비교를 지원한다는 점도 함께 기억해 두면 좋습니다.