C# - 열거형

MothorMoth·2024년 4월 27일

C#

목록 보기
13/17
post-thumbnail

열거형 (Enum)

  • 열거형은 서로 관련된 상수들의 집합을 정의하며, 각 상수는 기본적으로 정수 값을 갖는다.

1. 열거형을 사용하는 이유

  1. 가독성: 열거형을 사용하면 일련의 연관된 상수들을 명명할 수 있다. 이를 통해 코드의 가독성이 향상되고, 상수를 사용할 때 실수로 잘못된 값을 할당하는 것을 방지할 수 있다.

  2. 자기 문서화: 열거형은 의미 있는 이름을 사용하여 상수를 명명할 수 있다. 이를 통해 코드의 가독성이 향상되며, 상수의 의미를 명확하게 설명할 수 있다.

  3. 스위치 문과의 호환성: 열거형을 사용하면 스위치 문에서 다양한 상수 값에 대한 분기를 쉽게 작성할 수 있어 유용하다.

2. 열거형 구현

  • 열거형 정의
enum MyEnum
{
    Value1, // 0
    Value2, // 1
    Value3  // 2
}
  • 열거형의 자료형 지정
enum MyEnum : byte // 정수형 자료형들을 지정할 수 있다. 예를 들어, byte, short, long 등
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 3
}
  • 열거형 사용
MyEnum myEnum = MyEnum.Value1;
  • 열거형 상수 값 지정
enum MyEnum
{
    Value1 = 10,
    Value2,      // 명시적으로 지정하지 않았으므로 Value1의 값에서 1 증가된 11이 할당된다.
    Value3 = 20
}
  • 열거형 형변환
int intValue = (int)MyEnum.Value1;   // 열거형 값을 정수형으로 변환
MyEnum enumValue = (MyEnum)intValue; // 정수형 값을 열거형으로 변환
  • 스위치문과의 사용
switch(enumValue)
{
    case MyEnum.Value1:
        // Value1에 대한 처리
        break;
    case MyEnum.Value2:
        // Value2에 대한 처리
        break;
    case MyEnum.Value3:
        // Value3에 대한 처리
        break;
    default:
        // 기본 처리
        break;
}

3. 열거형 사용 예제

  • 요일 출력
enum DaysOfWeek
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
}

class Program
{
    static void Main(string[] args)
    {
        DaysOfWeek day = DaysOfWeek.Monday;
        Console.WriteLine("Today is " + day);
    }
}

// 출력: Today is Monday
  • 입력 월 출력하기
// Month 열거형
enum Month
{
    January = 1,
    February,
    March,
    April,
    May,
    June,
    July,
    August,
    September,
    October,
    November,
    December
}

class Program
{
    // 전달받은 정수형 값에 해당하는 월을 출력하는 메소드
    static void ProcessMonth(int month)
    {
        // 전달받은 값이 Month 열거형의 유효한 범위인지 확인
        if (month >= (int)Month.January && month <= (int)Month.December)
        {
            // 전달받은 값을 Month 열거형으로 변환하고 해당 월을 출력
            Month selectedMonth = (Month)month;
            Console.WriteLine("선택한 월은 {0}입니다.", selectedMonth);
        }
        else
        {
            Console.WriteLine("올바른 월을 입력해주세요.");
        }
    }

    static void Main()
    {
        int userInput = 7; // 사용자 입력 예시
        ProcessMonth(userInput);
    }
}

// 출력: 선택한 월은 July입니다.
  • 게임 사용 사례
// 게임 상태
enum GameState
{
    MainMenu,
    Playing,
    Paused,
    GameOver
}

// 방향
enum Direction
{
    Up,
    Down,
    Left,
    Right
}

// 아이템 등급
enum ItemRarity
{
    Common,
    Uncommon,
    Rare,
    Epic
}

0개의 댓글