Language/C# 그때그때 끄적끄적

[c#] enum 그리고 switch case

윤수동 2021. 7. 15. 15:22

enum 은 사용자 정의 자료형중 하나로 열거되어있는 값이 상수로 정의된 열거형이라 불리며, 상수값을 대표하는 이름들의 집합을 의미한다

enum은 c# java c++ 전부 비슷한 형태로쓰이니 사용방식을 잘배우도록해야한다

 

간단하게 예를 들어 우리가 상태를 정의할때

기본상태, 공격하는상태, 방어하는상태 죽은 상태이렇게 4가지가 있다고가정해보자 그렇다면

이4가지 상태를 정수형으로 하나하나 변수로 만들거나 배열로처리하는방법도있겠지만

상수로 정의하여 좀더 가독성이 좋은 코드를 만들 수 있다

 

    private bool isIdle;
    private bool isAtk;
    private bool isDef;
    private bool isdie

이런식으로 하나하나 정의하는것보다 enum을 활용한 방식을 봐보자

각각의 상태를 정의하는것보다 아래처럼 enum으로 정리하는게 더깔끔하고 양이 많아질수록 차이가커질것이다

using System.Collections;
using System.Collections.Generic;


public class EnumTest
{
    public enum State { ISIDLE = 10, ISATK, ISDEF = 51, ISDIE };        //각각 10 11 51 52

    public State playerstate = State.ISIDLE;


    void Action(State st)
    {
        switch (st)          // ((State)(int형 변수)) 형변환하여 사용하는것 또한 가능
        {
            case State.ISIDLE:
                break;
            case State.ISATK:
                break;
            case State.ISDEF:
                break;
            case State.ISDIE:
                break;
        }
    }

}

enum 이의의 상수의 값을 명시적으로 설정할 수 있으며 기본적으로 첫 열거자가 0의 값을가지고 이후의 열거자는 이전의 열거자보다 1이 큰 값일 할당되는 형태이다

 

switch 문을 사용하여 조금더 괜찮을 코드를 사용하는것또한 가능하다

 

그렇다면 왜 enum을 사용하는것인가 가독성을위해서 사용하는게 가장큰 이유다 때문에 가독성을 해치는 enum을 만들지는 않도록해야한다