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() 등의 검증 로직을 함께 활용하는 것이 좋습니다.