IMCAT.DEV
로그인 가입
C# 입문 자료구조

C# enum(열거형) 사용법

C# enum(열거형) 사용법 — 초급

enum(열거형) 사용법

1. 도입 (왜 배워야 하는가)

C#에서 enum(열거형)은 관련 상수 집합을 정의할 수 있는 강력한 도구입니다. 실무에서는 코드의 가독성을 높이고, 특정 값의 의미를 명확하게 전달하는 데 매우 유용합니다. 예를 들어, 프로그램에서 상태 코드나 옵션을 처리할 때, enum을 사용하면 숫자나 문자열 대신 의미 있는 이름을 사용할 수 있어 코드의 의미를 쉽게 이해할 수 있습니다.

반면, enum을 사용하지 않으면 숫자 값이나 문자열을 직접 사용하는 경우가 많아 코드가 복잡해지고, 실수로 잘못된 값을 사용하기 쉬워집니다. 예를 들어, status = 1이라고 쓸 때, 1이 무엇을 의미하는지 코드만 보고는 알기 어렵습니다. 하지만 enum을 사용하면 status = OrderStatus.Shipped와 같이 명확하게 표현할 수 있습니다.

2. 핵심 개념 설명

enum은 "열거형"의 줄임말로, 특정 값의 집합을 정의하는 데이터 형식입니다. 각 값은 이름을 가지고 있으며, 기본적으로 정수형으로 매핑됩니다. 이를 통해 읽기 쉽고 안전한 코드를 작성할 수 있습니다.

실생활 비유

enum은 마치 메뉴판처럼 생각할 수 있습니다. 메뉴판에는 다양한 음식의 이름이 나와 있고, 각 음식은 고유한 번호를 가집니다. 예를 들어, 피자는 1번, 파스타는 2번, 샐러드는 3번입니다. 사용자는 메뉴판을 보고 음식의 이름을 선택하고, 프로그램은 그에 맞는 숫자를 사용하여 처리합니다.

관련 용어 정리

용어설명
Enum열거형으로, 관련 상수 집합을 정의하는 데이터 타입.
Enum 값Enum에 정의된 각 상수, 기본적으로 정수형으로 매핑됨.
Enum 이름각 Enum 값에 대한 명칭.

3. 기본 코드 예제

다음은 enum을 정의하고 사용하는 기본 예제입니다.

enum DayOfWeek
{
    Sunday,    // 0
    Monday,    // 1
    Tuesday,   // 2
    Wednesday, // 3
    Thursday,  // 4
    Friday,    // 5
    Saturday   // 6
}

class Program
{
    static void Main(string[] args)
    {
        DayOfWeek today = DayOfWeek.Wednesday; // 오늘의 요일을 수요일로 설정
        Console.WriteLine("오늘은 " + today + "입니다."); // 오늘의 요일을 출력
    }
}

실행 결과

오늘은 Wednesday입니다.

코드 한 줄씩 동작 설명

  • enum DayOfWeek : 요일을 정의한 열거형을 선언합니다.
  • DayOfWeek today = DayOfWeek.Wednesday; : 오늘의 요일을 수요일로 설정합니다.
  • Console.WriteLine(...) : 설정한 요일을 출력합니다.
  • 4. 실전 활용 예제

    예제 1: 주문 상태 관리

    쇼핑몰에서 주문의 상태를 관리할 때 enum을 사용할 수 있습니다.

    enum OrderStatus
    {
        Pending,  // 주문 대기 중
        Processed,// 처리 중
        Shipped,  // 배송 중
        Delivered  // 배달 완료
    }
    
    class Order
    {
        public OrderStatus Status { get; set; }
    
        public Order()
        {
            Status = OrderStatus.Pending; // 기본 상태는 대기 중
        }
    }

    예제 2: 게임 캐릭터 상태

    게임에서 캐릭터의 상태를 표현할 때도 유용합니다.

    enum CharacterState
    {
        Idle,       // 대기 상태
        Running,    // 이동 중
        Attacking,  // 공격 중
        Defending   // 방어 중
    }
    
    class Character
    {
        public CharacterState State { get; set; }
    
        public void ChangeState(CharacterState newState)
        {
            State = newState;
            Console.WriteLine("캐릭터 상태가 " + State + "(으)로 변경되었습니다.");
        }
    }

    5. 흔한 실수와 주의사항

    실수 1: 잘못된 enum 값 사용

    DayOfWeek today = (DayOfWeek)7; // 잘못된 값
  • 올바른 코드
  • DayOfWeek today = DayOfWeek.Sunday; // 올바른 값
  • 주의: 범위를 벗어난 값으로 enum을 설정하면 런타임 오류가 발생할 수 있습니다.
  • 실수 2: enum 이름 중복

    enum Color
    {
        Red,
        Green
    }
    
    enum TrafficLight
    {
        Red, // 중복된 이름
        Yellow,
        Green
    }
  • 올바른 코드
  • enum TrafficLight
    {
        RedLight, // 중복 피하기 위해 이름 변경
        Yellow,
        GreenLight
    }
  • 주의: 동일한 이름의 enum을 정의하면 컴파일 오류가 발생합니다.
  • 6. 정리

  • enum은 관련 상수 집합을 정의하여 코드의 가독성을 높인다.
  • 실무에서 상태 코드, 옵션, 유형 등을 표현하는 데 유용하다.
  • enum 값은 기본적으로 정수형으로 매핑되며, 명확한 이름을 사용할 수 있다.
  • 다음에 학습하면 좋은 주제

  • enum과 관련된 확장 메서드
  • enum의 직렬화 방법
  • enum과 switch 문을 사용한 조건 처리