programing

C#의 모든 열거값을 순환하는 방법은 무엇입니까?

megabox 2023. 6. 3. 08:21
반응형

C#의 모든 열거값을 순환하는 방법은 무엇입니까?

이 질문에는 이미 답이 있습니다.
C#에서 열거형을 어떻게 열거합니까? 26개의 답

public enum Foos
{
    A,
    B,
    C
}

가능한 값을 반복해서 표시할 수 있는 방법이 있습니까?Foos?

기본적으로?

foreach(Foo in Foos)

예, 이 방법을GetValue‍‍‍s 사용할 수 있습니다.

var values = Enum.GetValues(typeof(Foos));

또는 입력된 버전:

var values = Enum.GetValues(typeof(Foos)).Cast<Foos>();

저는 오래 전에 이런 경우를 위해 개인 라이브러리에 도우미 기능을 추가했습니다.

public static class EnumUtil {
    public static IEnumerable<T> GetValues<T>() {
        return Enum.GetValues(typeof(T)).Cast<T>();
    }
}

용도:

var values = EnumUtil.GetValues<Foos>();
foreach(Foos foo in Enum.GetValues(typeof(Foos)))
foreach (EMyEnum val in Enum.GetValues(typeof(EMyEnum)))
{
   Console.WriteLine(val);
}

Jon Skeet님께 경의를 표합니다. http://bytes.com/groups/net-c/266447-how-loop-each-items-enum

foreach (Foos foo in Enum.GetValues(typeof(Foos)))
{
    ...
}

업데이트됨
언젠가 예전의 대답으로 되돌아가는 댓글을 보게 되는데, 지금은 다르게 할 것 같습니다.요즘 나는 다음과 같이 쓰고 있습니다.

private static IEnumerable<T> GetEnumValues<T>()
{
    // Can't use type constraints on value types, so have to do check like this
    if (typeof(T).BaseType != typeof(Enum))
    {
        throw new ArgumentException("T must be of type System.Enum");
    }

    return Enum.GetValues(typeof(T)).Cast<T>();
}
static void Main(string[] args)
{
    foreach (int value in Enum.GetValues(typeof(DaysOfWeek)))
    {
        Console.WriteLine(((DaysOfWeek)value).ToString());
    }

    foreach (string value in Enum.GetNames(typeof(DaysOfWeek)))
    {
        Console.WriteLine(value);
    }
    Console.ReadLine();
}

public enum DaysOfWeek
{
    monday,
    tuesday,
    wednesday
}
 Enum.GetValues(typeof(Foos))

네. 수업시간에 메소드를 사용하세요.

언급URL : https://stackoverflow.com/questions/972307/how-to-loop-through-all-enum-values-in-c

반응형