C#의 Enum.GetNames() 메서드는 열거형(Enumeration)에 정의된 모든 상수의 이름을 문자열 배열(string[]) 형태로 반환합니다. 이 메서드를 활용하면 열거형에 포함된 값들을 반복문으로 손쉽게 순회할 수 있어, 드롭다운 목록 생성이나 로그 출력 등 다양한 상황에서 유용하게 사용됩니다.
열거형 선언 예시
먼저 재고 항목을 나타내는 간단한 열거형을 선언해 보겠습니다.
enum Stock { Watches, Books, Grocery };이 열거형에는 시계(Watches), 도서(Books), 식료품(Grocery) 세 가지 상수가 정의되어 있습니다.
GetNames() 기본 사용법
상수 이름 배열을 가져오려면 Enum.GetNames()에 열거형의 타입을 전달하고, 반환된 배열을 foreach 문으로 순회하면 됩니다.
foreach(string s in Enum.GetNames(typeof(Stock))) {
Console.WriteLine(s);
}전체 예제 코드
이제 개별 상수 이름을 조회하는 Enum.GetName()과 전체 이름 배열을 반환하는 Enum.GetNames()를 함께 사용한 완성된 예제를 살펴보겠습니다.
using System;
class Demo {
enum Stock { Watches, Books, Grocery };
static void Main() {
Console.WriteLine("첫 번째 재고 카테고리 = {0}", Enum.GetName(typeof(Stock), 0));
Console.WriteLine("두 번째 재고 카테고리 = {0}", Enum.GetName(typeof(Stock), 1));
Console.WriteLine("세 번째 재고 카테고리 = {0}", Enum.GetName(typeof(Stock), 2));
Console.WriteLine("모든 재고 카테고리...");
foreach(string s in Enum.GetNames(typeof(Stock))) {
Console.WriteLine(s);
}
}
}실행 결과
첫 번째 재고 카테고리 = Watches 두 번째 재고 카테고리 = Books 세 번째 재고 카테고리 = Grocery 모든 재고 카테고리... Watches Books Grocery
핵심 정리 및 참고 사항
- Enum.GetNames(Type): 열거형의 모든 상수 이름을
string[]배열로 한꺼번에 반환합니다. - Enum.GetName(Type, int): 지정한 인덱스(정수 값)에 해당하는 상수 이름 하나만 반환합니다.
- 배열 요소의 순서는 열거형에 상수가 선언된 순서를 따릅니다.
- .NET 5 이상에서는
Enum.GetNames<Stock>()처럼 제네릭 버전을 사용할 수 있어typeof연산자 없이 더 간결하게 작성할 수 있습니다.
이처럼 GetNames() 메서드를 사용하면 열거형에 정의된 모든 상수를 코드 수정 없이 동적으로 처리할 수 있습니다.