【发布时间】:2011-03-02 04:59:59
【问题描述】:
我有许多 枚举,需要将它们作为 List<string> 对象,以便通过它们枚举,从而使GetEnumAsStrings<T>() 方法。
但在我看来会有更简单的方法。
没有内置方法可以将这样的枚举放入List<string>吗?
using System;
using System.Collections.Generic;
namespace TestEnumForeach2312
{
class Program
{
static void Main(string[] args)
{
List<string> testModes = StringHelpers.GetEnumAsStrings<TestModes>();
testModes.ForEach(s => Console.WriteLine(s));
Console.ReadLine();
}
}
public static class StringHelpers
{
public static List<string> GetEnumAsStrings<T>()
{
List<string> enumNames = new List<string>();
foreach (T item in Enum.GetValues(typeof(TestModes)))
{
enumNames.Add(item.ToString());
}
return enumNames;
}
}
public enum TestModes
{
Test,
Show,
Wait,
Stop
}
}
附录:
谢谢大家,很有见地。因为我最终需要这个 Silverlight 似乎没有 GetValues() 或 GetNames() 用于枚举,所以我创建了这个从 this method 创建的方法:
public static List<string> ConvertEnumToListOfStrings<T>()
{
Type enumType = typeof(T);
List<string> strings = new List<string>();
var fields = from field in enumType.GetFields()
where field.IsLiteral
select field;
foreach (FieldInfo field in fields)
{
object value = field.GetValue(enumType);
strings.Add(((T)value).ToString());
}
return strings;
}
【问题讨论】:
标签: c# list foreach ienumerable enums