Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Type.GetEnumName() 메서드 완벽 가이드: 열거형 상수 이름 조회하기

C#의 Type.GetEnumName() 메서드는 현재 열거형(Enumeration) 타입에서 지정된 값에 해당하는 상수의 이름을 반환합니다. 열거형 멤버의 값을 알고 있을 때 그에 대응하는 이름을 손쉽게 얻을 수 있는 유용한 메서드입니다.

문법(Syntax)

GetEnumName() 메서드의 기본 문법은 다음과 같습니다.

public virtual string GetEnumName(object val);

여기서 매개변수 val은 이름을 조회하고자 하는 값(value)을 의미합니다. 이 값에 해당하는 열거형 상수의 이름이 문자열(string) 형태로 반환됩니다.

예제 1: 기본 사용법

다음은 Type.GetEnumName() 메서드를 구현한 첫 번째 예제입니다.

using System;
public class Demo {
    enum Vehicle {Car, Bus, Bike}
    public static void Main(){
        Vehicle v = Vehicle.Bike;
        Type type = v.GetType();
        string str = type.GetEnumName(v);
        Console.WriteLine("GetEnumName() to return the constant name = " + str);
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

GetEnumName() to return the constant name = Bike

예제에서는 Vehicle 열거형의 Bike 값을 변수 v에 할당한 후, GetType() 메서드로 타입 정보를 가져오고 GetEnumName()을 호출하여 해당 값의 상수 이름인 "Bike"를 반환받았습니다.

예제 2: 예외 처리 (ArgumentException)

GetEnumName() 메서드를 호출할 때 대상 타입이 열거형이 아니라면 ArgumentException 예외가 발생합니다. 다음 예제에서는 try-catch 블록을 사용해 이러한 상황을 안전하게 처리하는 방법을 보여줍니다.

using System;
public class Demo {
    enum Vehicle {Car, Bus, Bike}
    public static void Main(){
        try {
            Vehicle v = Vehicle.Bike;
            Type type = typeof(string);
            string str = type.GetEnumName(v);
            Console.WriteLine("GetEnumName() to return the constant name = " + str);
        }
        catch (ArgumentException e){
            Console.WriteLine("Not an enum!");
            Console.Write("{0}", e.GetType(), e.Message);
        }
    }
}

출력 결과

string 타입은 열거형이 아니므로 다음과 같은 결과가 출력됩니다.

Not an enum!
System.ArgumentException

정리

Type.GetEnumName() 메서드는 열거형 값을 기반으로 상수 이름을 조회할 때 매우 편리합니다. 단, 호출 대상 타입이 반드시 열거형이어야 하며, 그렇지 않을 경우 ArgumentException이 발생하므로 실무에서는 try-catch 블록이나 Enum.IsDefined() 등의 검증 로직을 함께 활용하는 것이 좋습니다.