【发布时间】:2010-05-03 20:50:41
【问题描述】:
遍历枚举以查找匹配值的最佳方法是什么?
string match = "A";
enum Sample { A, B, C, D }
foreach(...) {
//should return Sample.A
}
【问题讨论】:
-
foreach 什么?你到底想测试什么?
-
我正在查看“A”是否存在并返回匹配的枚举数值
遍历枚举以查找匹配值的最佳方法是什么?
string match = "A";
enum Sample { A, B, C, D }
foreach(...) {
//should return Sample.A
}
【问题讨论】:
你正在寻找Enum.Parse:
Sample e = (Sample)Enum.Parse(typeof(Sample), match);
您可以通过调用 Enum.GetValues 或 Enum.GetNames 来循环访问这些值。
【讨论】:
Enum.Parse(typeof(Sample), "A");
【讨论】:
(Sample)Enum.Parse(typeof(Samples), "A"); //returns Sample.A
【讨论】:
public Sample matchStringToSample(string match)
{
return (Sample)Enum.Parse(typeof(Sample), match);
}
您必须处理字符串匹配不是有效枚举值的情况。在这种情况下,Enum.Parse 会抛出 ArgumentException。
【讨论】:
Enum.TryParse 是 .Net 4.0 的新手。