개요

프로그래밍에서 가독성은 중요한 부분이다.

가독성을 높이는데 주로 사용되는 열거형에 대해서 알아본다.

왜 사용하는가

다음 상황을 살펴보자

  1. 변수의 값이 1,2,3 처럼 의미가 특별이 없는 경우가 있다.
  2. 일련의 연관된 상수가 가독성이 떨어진다.
  3. 조건문이 지저분하다.

이런 경우에 열거형 도입으로 해결이 가능하다.

  1. 이름 있는 값으로 대체 가능하다
  2. 의미 전달이 명확하다
  3. switch와 함께 깔끔하게 처리할 수 있다.

문법 구조

enum 열거형이름
{
    값1,   // 0
    값2,   // 1
    값3    // 2
}

enum Direction
{
    Up = 1,
    Down = 3,
    Left = 5,
    Right = 7
}

enum ByteStatus : byte
{
    OK = 1,
    Fail = 255
}

//열거형 사용
Direction d = Direction.Up;

//사용 예시
enum WeaponType
{
    Sword,
    Bow,
    Staff
}

WeaponType weapon = WeaponType.Bow;

if (weapon == WeaponType.Bow)
{
    Debug.Log("활 사용 중!");
}

switch (weapon)
{
    case WeaponType.Sword:
        Debug.Log("칼로 공격!");
        break;
    case WeaponType.Bow:
        Debug.Log("화살 발사!");
        break;
    case WeaponType.Staff:
        Debug.Log("마법 시전!");
        break;
}

//숫자와 열거형 간 변환
int num = (int)WeaponType.Staff;           // enum → int
WeaponType type = (WeaponType)1;           // int → enum

//주의 : 존재하지 않는 숫자로 캐스팅하면 예외 없이 이상한 값이 들어갈 수 있음
WeaponType invalid = (WeaponType)999;
Debug.Log(invalid);  // 출력됨! → 타입 안전성 주의
// 값 검증이 필요한 경우 Enum.IsDefined(typeof(T), value) 사용