可能なすべての値を表示したい列挙型があります。そのようなリストを手動で作成する代わりに、列挙型のすべての可能な値の配列またはリストを取得する方法はありますか?例:列挙型がある場合:
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[]
により、選択した列挙型のすべての列挙型名を含むが返されます。
より一般的な方法を好む場合は、ここにあります。必要に応じて、コンバーターをさらに追加できます。
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に行きます。
参照:
希望は誰かを助けます。