1 minute read

개요


enum (열거형) 은 특정한 상수 집합을 정의하여 코드의 가독성을 높이고, 오류를 줄이는 데 사용되는 자료형입니다. 쉽게 말해, 특정한 값들만 가질 수 있는 변수를 미리 정의해 놓는 것이라고 생각할 수 있습니다.

예를 들어, 요일을 나타내는 변수를 만들 때, “월요일”, “화요일”, “수요일” 등의 문자열 대신 “Monday”, “Tuesday”, “Wednesday”와 같은 명확한 이름의 상수를 사용하여 표현할 수 있습니다.

특징


  • 기본형: enum은 기본적으로 int형으로 취급됩니다. 즉, 각 enum 멤버는 정수 값과 연결되어 있습니다. 첫 번째 멤버는 0부터 시작하여 순차적으로 증가합니다.
  • 사용자 정의 값: 각 멤버에 직접 정수 값을 할당할 수 있습니다.
  • Flags 속성: 비트 연산을 사용하여 여러 값을 표현할 수 있도록 합니다.
  • switch 문: enum 값을 switch 문에서 사용하여 다양한 경우의 수를 처리할 수 있습니다.

장점


  • 코드 가독성 향상: 숫자 대신 의미 있는 이름을 사용하여 코드를 더욱 명확하게 만들 수 있습니다.
  • 오류 감소: 허용되지 않는 값이 할당되는 것을 방지하여 프로그램의 안정성을 높입니다.
  • 타입 안전성: enum 값은 해당 enum 타입으로만 비교할 수 있어 타입 관련 오류를 줄일 수 있습니다.
  • 리팩토링 용이: enum 값의 이름을 변경하더라도 코드 전반에 걸쳐 일관되게 변경할 수 있습니다.

활용 예시


  • 상태 표현: 프로그램의 상태를 나타내는 데 사용합니다. (예: 게임 캐릭터의 상태, 네트워크 연결 상태)
  • 옵션 설정: 다양한 옵션을 나타내는 데 사용합니다. (예: 폰트 스타일, 색상)
  • 에러 코드: 에러 발생 시 원인을 나타내는 코드를 저장하는 데 사용합니다

주의사항


  • enum 값 비교 시 주의: enum 값은 == 연산자로 비교해야 합니다. 숫자 값으로 비교하면 예상치 못한 결과가 발생할 수 있습니다.
  • Flags 속성 사용 시 주의: 비트 연산에 대한 이해가 필요합니다.
  • enum 멤버 이름: 의미 있는 이름을 사용하여 코드의 가독성을 높여야 합니다.

예제


public enum DayOfWeek
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

// enum 사용 예시
DayOfWeek today = DayOfWeek.Wednesday;

if (today == DayOfWeek.Sunday)
{
    Console.WriteLine("오늘은 주말입니다.");
}


[Switch문에서 사용]

public enum Color
{
    Red,
    Green,
    Blue
}

public void PrintColor(Color color)
{
    switch (color)
    {
        case Color.Red:
            Console.WriteLine("빨간색");
            break;
        case Color.Green:
            Console.WriteLine("초록색");
            break;
        case Color.Blue:
            Console.WriteLine("파란색");
            break;
        default:
            Console.WriteLine("알 수 없는 색깔");
            break;
    }
}


[메서드 파라미터로 사용]

public void DrawShape(Shape shape)
{
    switch (shape)
    {
        case Shape.Circle:
            // 원 그리기
            break;
        case Shape.Rectangle:
            // 사각형 그리기
            break;
        case Shape.Triangle:
            // 삼각형 그리기
            break;
        default:
            Console.WriteLine("알 수 없는 도형");
            break;
    }
}

public enum Shape
{
    Circle,
    Rectangle,
    Triangle
}



Top