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

C# UInt16 구조체 완벽 정리: CompareTo()와 Equals() 메서드 활용법

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 타입 각각과의 비교를 지원한다는 점도 함께 기억해 두면 좋습니다.