개발성문

enum(열거 형식 : Enumerator)에 대하여 본문

공부 좀 하자/Unity

enum(열거 형식 : Enumerator)에 대하여

개발성문 2018. 3. 26. 13:06


Enumerator 열거 형식은 같은 범주에 속하는 여러개의 상수를 선언할 때 사용하는 방법입니다.


enum 이라는 것을 사용하죠.


enum의 특징은 키워드를 사용한다는 것입니다. 


의미있는 단어를 사용하여 의미를 파악하는데 용이하고, 가독의 편의성이 높죠.


기본 형식은 아래와 같습니다.

enum 열거형식명 : 기본자료형식{ 상수1, 상수2, 상수3, 상수4, ...}


열거형에서 사용이 승인된 형식은  bytesbyteshortushortintuintlong 또는 ulong 입니다.


기본자료형식은 생략을 해도 되는데, 그 경우 int 형 을 기본형식으로 하게 됩니다.


public enum SORT
    {
        HUMAN,  
        PLANT,      
        DEAMON,     
        UNDEAD      
    }


    void Start () {
        //1.
        Debug.Log(SORT.HUMAN);
        Debug.Log(SORT.PLANT);
        Debug.Log(SORT.DEAMON);
        Debug.Log(SORT.UNDEAD);

        //2.
        Debug.Log((int)SORT.HUMAN);
        Debug.Log((int)SORT.PLANT);
        Debug.Log((int)SORT.DEAMON);
        Debug.Log((int)SORT.UNDEAD);
        
        //3.
        Debug.Log((SORT.PLANT).GetType());

        //4.    
        Debug.Log(((int)SORT.PLANT).GetType());
    }

위의 소스에서 SORT 라는 이름으로 열거형 안에 상수를 선언 했습니다.


이때 기본형식을 생략 했기때문에 자동으로 int 형이 되었고, 내부에 어떤 값도 할당 하지 않았는데요.


1번 처럼 값을 찍어 보면 

SORT 내의 키워드만 나오게 되네요.

3번을 통해 타입을 확인해보면 위와 같습니다.



이와 같은 문제로 열거형에서는 명시적으로 형변환(cast) 해줘야 합니다. 

2번과 같이 출력할 경우,

올바르게 원하는 값이 나오게 되었죠.

이것도 4번을 통해 타입을 확인해보면 형변환으로 인해  int형이 나오는 것을 확인 할 수 있죠.


여기서 봐야 하는건 어떤 값도 할당하지 않았는데, 첫번째 요소 값 0 부터  1씩 증가하여 정수형 값이 자동으로 할당 되었다는 것입니다.


이렇게 설계가 된 이유는 열거형 요소가 어떤 값을 갖는지 보다, 중복되지 않는 값을 갖느냐가 중요하기 때문이라고 합니다.


public enum SORT
{
    HUMAN = 2,  
    PLANT,      
    DEAMON,     
    UNDEAD      
}

또, 내부적으로 직접 값을 할당해주면,


할당해준 값으로 부터 1씩 증가한 것을 볼수 있습니다. 


공부한 내용은 여기까지 이구요. 추가되는 내용은 업데이트 하도록 하겠습니다. 

Comments