C#에서 Int16.CompareTo() 메서드는 현재 인스턴스를 지정된 개체(Object) 또는 다른 Int16(짧은 정수, short) 인스턴스와 비교한 뒤, 그 결과를 나타내는 정수를 반환합니다. 반환된 정수는 현재 인스턴스의 값이 비교 대상보다 작은지, 같은지, 큰지를 알려줍니다.
이 메서드는 .NET의 IComparable 및 IComparable<short> 인터페이스를 구현하는 것으로, 정렬이나 값 비교 로직을 만들 때 자주 활용됩니다.
구문(Syntax)
Int16.CompareTo() 메서드는 다음 두 가지 오버로드 형태로 제공됩니다.
public int CompareTo (short val); public int CompareTo (object val);
- 첫 번째 구문: 매개변수
val은 비교할 short 형식의 정수입니다. - 두 번째 구문: 매개변수
val은 비교할 개체(Object)입니다.
반환값(Return Value)
비교 결과에 따라 반환되는 값은 다음과 같습니다.
- 0 미만(음수): 현재 인스턴스가 비교 대상 값보다 작은 경우
- 0: 현재 인스턴스가 비교 대상 값과 같은 경우
- 0 초과(양수): 현재 인스턴스가 비교 대상 값보다 큰 경우
참고로, 두 번째 오버로드에서 null과 비교하면 현재 인스턴스가 더 크다고 간주되어 양수가 반환되며, Int16이 아닌 개체를 전달하면 ArgumentException 예외가 발생할 수 있습니다.
예제 1: 두 값이 다른 경우
아래 예제는 서로 다른 두 개의 short 값을 비교하는 코드입니다.
using System;
public class Demo {
public static void Main(){
short val1 = 20;
short val2 = 18;
Console.WriteLine("Value 1 = " + val1);
Console.WriteLine("Value 2 = " + val2);
Console.WriteLine("Return value (comparison) = " + val1.CompareTo(val2));
}
}실행 결과
Value 1 = 20 Value 2 = 18 Return value (comparison) = 2
val1(20)이 val2(18)보다 크기 때문에 양수인 2가 반환되었습니다.
예제 2: 두 값이 같은 경우
이번에는 값이 동일한 경우의 비교 결과를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
short val1 = 10;
short val2 = 10;
Console.WriteLine("Value 1 = " + val1);
Console.WriteLine("Value 2 = " + val2);
Console.WriteLine("Return value (comparison) = " + val1.CompareTo(val2));
}
}실행 결과
Value 1 = 10 Value 2 = 10 Return value (comparison) = 0
두 값이 같으므로 반환값이 0으로 나옵니다.
마무리
Int16.CompareTo() 메서드는 단순히 두 숫자의 크기를 비교하는 것 이상으로, 반환값의 부호(+, 0, −)를 통해 비교 결과를 명확하게 판단할 수 있게 해줍니다. 배열 정렬, 조건 분기, 사용자 정의 비교 로직 등을 구현할 때 유용하게 활용해 보세요.