C#에서 열거형의 유형 확인하기
C#에서는 GetType() 메서드를 사용하여 열거형(enum)의 유형을 쉽게 가져올 수 있습니다. 이 메서드는 개체의 실제 런타임 형식을 반환하므로, 열거형 멤버가 어떤 열거형에 속하는지, 그리고 그 기본(underlying) 형식이 무엇인지 확인할 때 매우 유용합니다.
열거형 값 준비하기
먼저 서로 다른 열거형의 값을 담은 배열을 준비합니다.
Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday};이 배열에는 ConsoleColor와 DayOfWeek라는 두 가지 서로 다른 열거형의 멤버가 들어 있습니다.
GetType() 메서드로 유형 가져오기
각 열거형 값의 유형을 가져오려면 GetType() 메서드를 호출하기만 하면 됩니다.
Type enumType = val.GetType();
여기에 더해 Enum.GetUnderlyingType() 메서드를 함께 사용하면 해당 열거형의 기본 형식(예: Int32)까지 확인할 수 있습니다.
전체 예제 코드
다음은 열거형의 유형과 기본 형식을 화면에 표시하는 전체 예제입니다.
using System;
public class Demo {
public static void Main() {
Enum[] values = { ConsoleColor.Blue, DayOfWeek.Sunday};
Console.WriteLine("{0,-5} {1, 10} {2,10}\n", "Member", "Enumeration", "UnderlyingType");
foreach (var val in values)
Info(val);
}
static void Info(Enum val) {
Type enumType = val.GetType();
Type underlyingType = Enum.GetUnderlyingType(enumType);
Console.WriteLine("{0, -5} {1, 10} {2,10}", val, enumType.Name, underlyingType.Name);
}
}실행 결과
Member Enumeration UnderlyingType Blue ConsoleColor Int32 Sunday DayOfWeek Int32
코드 설명
Main 메서드에서는 열거형 값들을 배열로 만든 뒤, 각 요소에 대해 Info 메서드를 호출합니다. Info 메서드 내부에서는 다음 작업이 수행됩니다.
val.GetType()— 해당 열거형 값의 실제 형식(ConsoleColor 또는 DayOfWeek)을 반환합니다.Enum.GetUnderlyingType(enumType)— 열거형의 기본 형식(Int32)을 반환합니다.- 마지막으로 형식 지정 문자열 출력을 통해 멤버 이름, 열거형 이름, 기본 형식을 정렬하여 보여줍니다.
실행 결과에서 확인할 수 있듯이 두 열거형 모두 기본적으로 Int32를 기반으로 동작합니다.