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

C# SByte.CompareTo() 메서드 완벽 가이드 – 예제 코드로 배우기

C#의 SByte.CompareTo() 메서드는 현재 인스턴스를 지정된 개체(object) 또는 SByte 값과 비교한 후, 두 값의 상대적인 크기를 나타내는 정수를 반환합니다.

반환되는 값은 다음과 같이 해석할 수 있습니다.

  • 양수: 현재 인스턴스가 비교 대상보다 큰 경우
  • 음수(음의 정수): 현재 인스턴스가 비교 대상보다 작은 경우
  • 0: 두 값이 같은 경우

구문(Syntax)

SByte.CompareTo() 메서드에는 두 가지 오버로드가 존재합니다.

public int CompareTo(sbyte val);
public int CompareTo(object ob);

첫 번째 구문의 val 매개변수는 비교할 8비트 부호 있는 정수(sbyte)를 의미하며, 두 번째 구문의 ob 매개변수는 비교할 개체를 나타냅니다.

예제 1: sbyte 값끼리 비교하기

두 개의 sbyte 변수를 CompareTo() 메서드로 비교하는 예제입니다.

using System;
public class Demo {
    public static void Main() {
        sbyte s1 = 55;
        sbyte s2 = 55;
        Console.WriteLine("Value of S1 = " + s1);
        Console.WriteLine("Value of S2 = " + s2);
        int res = s1.CompareTo(s2);
        if (res > 0)
            Console.WriteLine("s1 > s2");
        else if (res < 0)
            Console.WriteLine("s1 < s2");
        else
            Console.WriteLine("s1 = s2");
    }
}

실행 결과

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

Value of S1 = 55
Value of S2 = 55
s1 = s2

s1과 s2가 모두 55로 동일한 값을 가지므로, CompareTo() 메서드는 0을 반환하고 "s1 = s2"가 출력됩니다.

예제 2: 개체(object)와 비교하기

이번에는 sbyte 값을 박싱(boxing)하여 개체로 변환한 뒤 비교하는 예제입니다. 두 번째 오버로드인 CompareTo(object) 버전이 사용됩니다.

using System;
public class Demo {
    public static void Main() {
        sbyte s1 = 55;
        object s2 = (sbyte)55;
        Console.WriteLine("Value of S1 = " + s1);
        Console.WriteLine("Value of S2 = " + s2);
        int res = s1.CompareTo(s2);
        if (res > 0)
            Console.WriteLine("s1 > s2");
        else if (res < 0)
            Console.WriteLine("s1 < s2");
        else
            Console.WriteLine("s1 = s2");
    }
}

실행 결과

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

Value of S1 = 55
Value of S2 = 55
s1 = s2

개체로 박싱된 값과 비교했을 때도 내부적으로 실제 값이 비교되므로, 역시 0이 반환되어 "s1 = s2"가 출력되는 것을 확인할 수 있습니다.

정리

SByte.CompareTo() 메서드는 sbyte 타입 간의 크기 비교를 간편하게 처리할 수 있는 유용한 메서드입니다. 조건문과 함께 사용하면 두 값의 대소 관계를 명확하게 판단할 수 있으며, 값형과 개체형 모두에 대해 오버로드를 통해 비교가 가능합니다.