[C#] Enum 타입 다루기

EnumStringConverter.md

Updated at 2021.12.14

Enum 타입 다루기

열겨형 타입(Enumeration Type)은 프로그래밍시 매우 유용하고 많이 다루게 된다. enum 키워드를 사용하여 타입을 정의하고, 그것을 새로운 타입으로 하여 새로운 변수를 정의하여 사용하면 된다.

실전 프로그래밍시에는 intstring 타입으로 변경할 경우가 많이 발생하는데 그것을 어떻게 할 수 있는지를 여기서 정리해 본다.

enum DialogResult {
    YES, // 0
    NO,  // 1
    CANCEL, // 2
    CONFIRM, // 3
    OK //4
}

DialogResult rslt = DialogResult.NO;

정수값을 할당하지 않으면 컴파일러가 순서대로 0부터 번호를 자동으로 할당한다.

enum to string

기본적으로 문자열로 변환하는 것은 매우 쉽다. ToString()함수를 제공하기 때문이다.

string str = rslt.ToString();
// str = "NO"

enum to int

정수형으로 변환하는 것을 캐스팅을 활용하면 쉽게 가능하다.

int num = (int)rslt;
// num = 1

string to enum

문자열을 enum으로 변환하는 경우는 위의 두가지 경우와 같은 함수와 간단한 캐스팅이 되지 않는다.

DialogResult rslt = (DialogResult)Enum.Parse(typeof(DialogResult), "NO");
// rslt = DialogResult.NO

매번 위와 같은 코드를 작성하기 보다는 ToString()함수 처럼 일반적으로 쓸 수 있는 ToEnum() Extension Method를 만들 수 있다.

// Definition of Extension Method
public static T ToEnum<T>(this string enumString)
{
    return (T)Enum.Parse(typeof(T), enumString)
}

// Usage
string noStr = "NO";
DialogResult rslt = noStr.ToEnum<DialogResult>();
// rslt = DialogResult.NO

int to enum

정수형을 열겨형으로 변환하는 것을 타입캐스팅을 활용하면 된다.

DialogResult rslt = (DialogResult)1;
// rslt = DialogResult.NO

댓글