Development Tip

C #에서 모든 열거 형 값의 배열을 얻는 방법은 무엇입니까?

yourdevel 2020. 10. 11. 11:24
반응형

C #에서 모든 열거 형 값의 배열을 얻는 방법은 무엇입니까?


가능한 모든 값을 표시하고 싶은 열거 형이 있습니다. 그러한 목록을 수동으로 만드는 대신 열거 형의 가능한 모든 값의 배열 또는 목록을 얻는 방법이 있습니까? 예를 들어 열거 형이있는 경우 :

public enum Enumnum { TypeA, TypeB, TypeC, TypeD }

어떻게 얻을 수있을 것입니다 List<Enumnum>포함 된을 { TypeA, TypeB, TypeC, TypeD }?


다음을 사용하여 열거 형 값의 일반 배열을 얻습니다 Enum.GetValues.

var valuesAsArray = Enum.GetValues(typeof(Enumnum));

그리고 이것은 일반적인 목록을 얻습니다.

var valuesAsList = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList();

이 코드를 시도하십시오.

Enum.GetNames(typeof(Enumnum));

string[]선택한 열거 형의 모든 열거 형 이름과 함께 a 반환합니다 .


Enum.GetValues(typeof(Enumnum));

Enum의 값 배열을 반환합니다.


약간 다른 것 :

typeof(SomeEnum).GetEnumValues();

다음과 같이 할 수 있습니다.

public enum Enumnum { 
            TypeA = 11,
            TypeB = 22,
            TypeC = 33,
            TypeD = 44
        }

이것의 모든 int 값은 enum입니다 11,22,33,44.

다음과 같은 방법으로 이러한 값을 얻을 수 있습니다.

var enumsValues = Enum.GetValues(typeof(Enumnum)).Cast<Enumnum>().ToList().Select(e => (int)e);

string.Join(",", enumsValues)입니다 11,22,33,44.


이것으로 :

string[] myArray = Enum.GetNames(typeof(Enumnum));

다음과 같이 값 배열에 액세스 할 수 있습니다.

Array myArray = Enum.GetValues(typeof(Enumnum));

당신이 사용할 수있는

Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().ToArray();

이것은 배열을 반환합니다!


좀 더 일반적인 방법을 선호한다면 여기에 있습니다. 필요에 따라 더 많은 변환기를 추가 할 수 있습니다.

    public static class EnumConverter
    {

        public static string[] ToNameArray<T>()
        {
            return Enum.GetNames(typeof(T)).ToArray();
        }

        public static Array ToValueArray<T>()
        {
            return Enum.GetValues(typeof(T));
        }

        public static List<T> ToListOfValues<T>()
        {
            return Enum.GetValues(typeof(T)).Cast<T>().ToList();
        }


        public static IEnumerable<T> ToEnumerable<T>()
        {
            return (T[])Enum.GetValues(typeof(T));
        }

    }

샘플 구현 :

   string[] roles = EnumConverter.ToStringArray<ePermittedRoles>();
   List<ePermittedRoles> roles2 = EnumConverter.ToListOfValues<ePermittedRoles>();
   Array data = EnumConverter.ToValueArray<ePermittedRoles>();

또한 사용할 수 있습니다

var enumAsJson=typeof(SomeEnum).Name + ":[" + string.Join(",", Enum.GetValues(typeof(SomeEnum)).Cast<SomeEnum>().Select(e => e.ToString())) + "]";

enum의 모든 요소를 ​​json 형식으로 가져옵니다.


OP는 enumC #에서 모든 의 배열을 얻는 방법을 물었습니다 .

enumC #에서 선택한 의 배열을 얻으려면 어떻게해야 합니까?

귀하의 열거 형

    enum WeekDays 
    {
        Sunday, 
        Monday,
        Tuesday
    }

당신은 단지 선택합니다 Sunday당신의에서 Enum.

  WeekDays[] weekDaysArray1 = new WeekDays[] { WeekDays.Sunday };

  WeekDays[] weekDaysArray2 = Enum.GetValues(typeof(WeekDays)).Cast<WeekDays>().Where
  (x => x == WeekDays.Sunday).ToArray();

크레딧은 지식이 풍부한 tl로 이동합니다.

참조 :

1.

2.

희망은 누군가를 돕습니다.

참고 URL : https://stackoverflow.com/questions/3816718/how-to-get-an-array-of-all-enum-values-in-c

반응형