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

C# 열거형(Enum) CompareTo 메서드로 값 비교하기

C#에서는 CompareTo() 메서드를 사용하여 두 개의 열거형(Enum) 값을 손쉽게 비교할 수 있습니다. 이 메서드는 IComparable 인터페이스를 구현하며, 호출한 인스턴스(원본)와 매개변수로 전달된 값(대상)을 비교한 결과를 정수 형태로 반환합니다.

반환값의 의미

CompareTo() 메서드는 비교 결과에 따라 다음 세 가지 값 중 하나를 반환합니다.

  • 0보다 작은 값: 원본(source)의 값이 대상(target)의 값보다 작은 경우
  • 0: 원본의 값과 대상의 값이 서로 같은 경우
  • 0보다 큰 값: 원본의 값이 대상의 값보다 큰 경우

사용 예제

아래 예제에서는 제품별 재고량을 나타내는 열거형을 정의하고, CompareTo() 메서드로 Keyboard와 PenDrive의 재고 크기를 비교합니다.

using System;

class Program {
    enum Products { HardDrive = 0, PenDrive = 4, Keyboard = 8 };

    static void Main() {
        Products prod1 = Products.HardDrive;
        Products prod2 = Products.PenDrive;
        Products prod3 = Products.Keyboard;

        Console.WriteLine("Stock for {0} is more than {1}?", prod3, prod2);
        Console.WriteLine("{0}{1}", prod3.CompareTo(prod2) > 0 ? "Yes" : "No", Environment.NewLine);
    }
}

실행 결과

Stock for Keyboard is more than PenDrive?
Yes

코드 설명

열거형 Products는 각 멤버가 명시적으로 정수 값을 가지도록 선언되었습니다. HardDrive는 0, PenDrive는 4, Keyboard는 8의 값을 가집니다.

Main() 메서드 안에서 prod3.CompareTo(prod2)가 호출되면, Keyboard(8)와 PenDrive(4)를 비교하여 양수를 반환합니다. 반환값이 0보다 크므로 삼항 연산자(? :)에 의해 "Yes"가 출력됩니다.

이처럼 CompareTo() 메서드를 활용하면 열거형 멤버의 내부 정수 값을 기준으로 대소 관계를 간단하게 판단할 수 있으며, 조건문과 함께 사용하면 다양한 비교 로직을 깔끔하게 구현할 수 있습니다.