가능한 모든 값을 표시하고 싶은 열거 형이 있습니다. 수동으로 그러한 목록을 만드는 대신 열거 형의 가능한 모든 값의 배열 또는 목록을 얻는 방법이 있습니까? 예를 들어 열거 형이있는 경우 :
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();
Enumnum.GetValues()
하고 Enumnum.GetNames()
존재하지 않습니다.
var valuesAsArray = (Enumnum[])Enum.GetValues(typeof(Enumnum));
.
Enum.GetValues(typeof(Enumnum)).Cast<ActualType>().ToList();
ActualType
의미 해야 합니까? 열거 형 Enumnum
의 경우 OP의 예제에 있거나 기본 유형 (일반적으로 int
) 일 수 있습니다 . 다른 생각이 있으신가요?
이 코드를 시도하십시오.
Enum.GetNames(typeof(Enumnum));
string[]
선택한 열거 형의 모든 열거 형 이름과 함께 a 를 반환합니다 .
다음과 같이 할 수 있습니다.
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
.
약간 다른 것 :
typeof(SomeEnum).GetEnumValues();
당신이 사용할 수있는
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>();
OP는 enum
C #에서 모든 값 의 배열을 얻는 방법을 물었습니다 .
enum
C #에서 선택한 값 의 배열을 얻으려면 어떻게해야 합니까?
귀하의 열거 형
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로 이동합니다.
참조 :
희망은 누군가를 돕습니다.