我正在尝试确定是否在我的代码中的枚举中找到了从文件读入的字符串值。
枚举:
internal enum Difficulty { None, Easy, Medium, Hard }
此时在我的代码header[i] = "EASY"
中。
我想将此值与我Difficulty
枚举中找到的任何值进行比较,但遇到问题。
代码:
每次执行以下代码时,if语句都会返回false,因为"Easy" != "EASY"
。
Difficulty dif = Difficulty.None;
if (Difficulty.TryParse(header[i], out dif)) { // RETURNS FALSE
MyLog.Write("It's in the Enum!");
}
我尝试将header[i]
值与Difficulty
语句中的TryParse
值进行比较,但会导致编译错误。
除了将所有Difficulty
值更改为大写值之外,还有什么可以做的吗?
答案 0 :(得分:2)
使用支持忽略大小写的TryParse版本:https://msdn.microsoft.com/en-us/library/dd991317(v=vs.110).aspx
您的代码变为:
Difficulty dif = Difficulty.None;
if (Enum.TryParse<Difficulty>(header[i], true, out dif))
{
MyLog.Write("It's in the Enum!");
}
答案 1 :(得分:1)
是的!
使用允许您忽略大小写的the overload for Enum.TryParse:
if (Enum.TryParse("EASY", true, out dif))
{
Console.WriteLine("It's in the Enum!");
}
答案 2 :(得分:1)
任何.ToString
的{{1}}值只返回您为其提供的名称。因此,如果您要在循环中执行此操作,我建议将所有名称添加到本地列表中并搜索可以提高性能的名称:
Enum