如何遍历任何枚举以将所有可能的值转换为字符串?

时间:2013-05-08 10:40:20

标签: c# string list methods enums

正如标题所说,从这个枚举:

public enum DeeMacsEnum
{
Value1,
Value2,
Value3
}

我想要List<String>。第一个元素将具有“Value1”,第二个元素将具有“Value2”等。

但是,我想保持这个方法足够通用,以便迭代任何类型的枚举

我尝试过的事情:

Array values = Enum.GetValues(typeof(DeeMacsEnum));

^这很好用。但不是通用的。为了使其可重复使用,我将其更改为:

var type = enumObject.GetType();
Array values = Enum.GetValues(typeof(type));

不起作用(甚至不编译),可以理解。

4 个答案:

答案 0 :(得分:2)

您实际拥有type,无需再使用typeof

  var type = enumObject.GetType();
  Array values = Enum.GetValues(type);

答案 1 :(得分:1)

尝试:

var names = Enum.GetNames(typeof(DeeMacsEnum));

答案 2 :(得分:1)

您可以使用:

string[] s = Enum.GetNames(typeof(YourEnumType));

答案 3 :(得分:0)

为什么不试试这个

public IEnumerable<string> getEnumValues<T>() where  T: struct,IConvertible
            {
            var type = typeof(T);
            if (type.IsEnum)
                {
                return Enum.GetNames(type);
                }
            else
                {
                throw new ArgumentException("Type parameter specified is not an enum type.");
                }
            }