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