C# 문법 4주차 - 열거형

Amberjack·2024년 1월 2일
0

C# 문법

목록 보기
24/44
post-custom-banner

🔢 열거형(Enums)

🤔 사용하는 이유?

  • 가독성 :

    열거형을 사용하면 일련의 연관된 상수들을 명명할 수 있다. → 코드의 가독성 향상, 상수 사용 시 실수로 잘못된 값을 할당하는 것을 방지할 수 있다.
  • 자기 문서화(Self-documenting) :

    열거형은 의미 있는 이름을 사용하여 상수를 명명할 수 있다. → 코드의 가독성 향상, 상수의 의미를 명확하게 설명 가능
  • 스위치문과의 호환성!

    열거형은 스위치문과 함께 사용할때 유용하다! 열거형을 사용하면 스위치 문에서 다양한 상수 값에 대한 분기를 쉽게 작성할 수 있다.

📌 열거형의 특징

  • 열거형은 서로 관련된 상수들의 집합을 정의할 때 사용
  • 열거형의 각 상수는 정수 값으로 지정된다.

🖥️ 열거형 구현

  • 열거형 정의

enum MyEnum
{
	// 따로 명시하지 않는 경우 enum의 각 요소는 0, 1, 2와 같이 1씩 증가된 값으로 초기화된다.
    Value1,		// Value1 = 0
    Value2,		// Value2 = 1
    Value3		// Value3 = 2
}
  • 열거형 사용

    MyEnum myEnum = MyEnum.Value1;

  • 열거형 상수 값 지정

enum MyEnum
{
    Value1 = 10,
    Value2,		// Value2 = 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;
}

👉 사용 예제)

▪️▪️ 입력 월 출력하기

// 월 열거형
public enum Month
{
    January = 1,
    February,
    March,
    April,
    May,
    June,
    July,
    August,
    September,
    October,
    November,
    December
}

// 처리하는 함수
static void ProcessMonth(int month)
{
    if (month >= (int)Month.January && month <= (int)Month.December)
    {
        Month selectedMonth = (Month)month;
        Console.WriteLine("선택한 월은 {0}입니다.", selectedMonth);
        // 월에 따른 처리 로직 추가
    }
    else
    {
        Console.WriteLine("올바른 월을 입력해주세요.");
    }
}


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

🎮 게임 사용 사례)

// 게임 상태
enum GameState
{
    MainMenu,
    Playing,
    Paused,
    GameOver
}

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

// 아이템 등급
enum ItemRarity
{
    Common,
    Uncommon,
    Rare,
    Epic
}
post-custom-banner

0개의 댓글