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

C#에서 열거형(Enum)의 모든 값을 반복하는 방법

C#에서 열거형(Enum)에 정의된 모든 값을 하나씩 순회하려면 Enum.GetValues() 메서드를 사용하면 됩니다. 이 메서드는 지정한 열거형 타입에 포함된 모든 상수 값을 배열 형태로 반환해 주기 때문에, foreach 루프와 함께 사용하면 간단하게 전체 값을 처리할 수 있습니다.

1. 열거형 정의하기

먼저 예제에서 사용할 열거형을 선언합니다. 아래 예시는 학점을 나타내는 Grade 열거형입니다.

public enum Grade { A, B, C, D, E, F };

2. foreach 루프로 값 순회하기

Enum.GetValues()에는 typeof 연산자를 통해 대상 열거형의 타입을 인수로 전달합니다. 반환된 배열을 foreach 루프로 순회하면서 각 값을 출력할 수 있습니다.

foreach (Grade g in Enum.GetValues(typeof(Grade))) {
    Console.WriteLine(g);
}

전체 예제 코드

지금까지의 내용을 하나의 완성된 프로그램으로 작성하면 다음과 같습니다.

using System;

public class EnumExample {
    public enum Grade { A, B, C, D, E, F };
    public static void Main() {
        foreach (Grade g in Enum.GetValues(typeof(Grade))) {
            Console.WriteLine(g);
        }
    }
}

실행 결과

A
B
C
D
E
F

참고: 이름만 가져오고 싶다면?

값이 아니라 열거형 멤버의 이름(문자열)만 필요한 경우에는 Enum.GetNames() 메서드를 사용하는 것이 좋습니다. 이 메서드는 string 배열을 반환하므로 별도의 캐스팅 없이 바로 사용할 수 있습니다.

foreach (string name in Enum.GetNames(typeof(Grade))) {
    Console.WriteLine(name);
}

또한 C# 7.3 이상에서는 제네릭 버전인 Enum.GetValues<T>()를 사용할 수 있어, typeof 호출 없이 더 간결하고 타입 안전하게 코드를 작성할 수 있습니다.

foreach (Grade g in Enum.GetValues<Grade>()) {
    Console.WriteLine(g);
}