본문 바로가기

C# 문법

[C#] Enum에 Name List / Value List 가져오기

Enum.GetValues(Type) / Enum.GetNames(Type)

  • 지정된 열거형에서 상숫값(문자열)의 배열을 검색합니다.

Enum 정보 가져오기

public enum Colors { red = 0, green = 1, blue = 2, yellow = 3 }

public void Run()
{            
    Console.WriteLine("Enum에 저장된 Name 가져오기");
    //Enum에 저장된 Name List로 가져오기
    var nameList = Enum.GetNames(typeof(Colors));

    foreach (var name in nameList)
        Console.WriteLine($"{name}");

    Console.WriteLine("Enum에 저장된 Value값 가져오기");
    var valueList = Enum.GetValues(typeof(Colors));
    foreach (var value in valueList)
        Console.WriteLine($"{(int)value}에 해당하는 값은 {(Colors)value}");
}

결과

    Enum에 저장된 Name 가져오기
    red
    green
    blue
    yellow
    Enum에 저장된 Value값 가져오기
    0에 해당하는 값은 red
    1에 해당하는 값은 green
    2에 해당하는 값은 blue
    3에 해당하는 값은 yellow

응용! Enum Name에 따른 Value값은?

public enum Colors { red = 0, green = 1, blue = 2, yellow = 3 }

public void Run()
{            
    //Enum에 저장된 Name List로 가져오기
    var nameList = Enum.GetNames(typeof(Colors));

    foreach (var name in nameList)
    {
        //name에 해당하는 Enum Value를 구하면?
        var val = Enum.Parse(typeof(Colors), name); 
        //어라 숫자가 아니네?
        // => Name에 맞는 Enum 값입니다. 그래서 글자로 보이는 것입니다.
        // => 그렇다면 숫자 값을 보고 싶다면, int로 캐스팅!
                Console.WriteLine($"{name}에 해당하는 Enum값 : {val}, 숫자 : {(int)val}");
    }
}

결과

red에 해당하는 Enum값 : red, 숫자 : 0
green에 해당하는 Enum값 : green, 숫자 : 1
blue에 해당하는 Enum값 : blue, 숫자 : 2
yellow에 해당하는 Enum값 : yellow, 숫자 : 3