如何遍历C#中的所有枚举值?

这个问题在这里已经有了答案:
如何在C#中枚举枚举?26个答案

public enum Foos{A,B,C}

有没有办法遍历Foos的可能值?

基本上?

foreach(Foo in Foos)
912195 次浏览
foreach(Foos foo in Enum.GetValues(typeof(Foos)))

是的,你可以使用#0方法:

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>();

是的。在#1类中使用#0方法。

foreach (EMyEnum val in Enum.GetValues(typeof(EMyEnum))){Console.WriteLine(val);}

图片来源:Jon Skeethttp://bytes.com/groups/net-c/266447-how-loop-each-items-enum

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

更新中
一段时间后,我看到一个评论,让我回到我以前的答案,我想我现在会做不同的事情。这些天我会写:

private static IEnumerable<T> GetEnumValues<T>(){// Can't use type constraints on value types, so have to do check like thisif (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}