我正在尝试解析String并将其转换为Enum。我不能在代码的这个区域使用字典,所以我使用Enum.Parse()。但是它总是会失败,即使传递的字符串应该与枚举最终匹配。这是C#代码:
hp.ItemSubType.Add((ItemSubtype)Enum.Parse(typeof(ItemSubtype), subTypeString));
这是枚举定义:
public enum ItemSubtype
{
ADSComputer,
// Bunch of values
CPU
}
现在,即使subTypeString
的值为“CPU”,它也不会与枚举中的任何内容匹配。我们有为此使用注释吗?
答案 0 :(得分:0)
只是猜测和提示:C#区分大小写,因此Cpu
与CPU
不同。此外,您可以使用通用TryParse
,它使代码更具可读性,并且还可以处理无效输入:
ItemSubtype itemType;
bool canParse = Enum.TryParse<ItemSubtype>("cpu", out itemType); // false
if(canParse)
{
hp.ItemSubType.Add(itemType);
}
答案 1 :(得分:0)
添加而不是解析中的问题我已经测试了解析
var subTypeString = "CPU"; var test = Enum.Parse(typeof(ItemSubtype), subTypeString);
检查您的集合类型(hp.ItemSubType)它必须具有相同类型的枚举!
答案 2 :(得分:0)
好的,如果我写这段代码
namespace N
{
using System;
class Program
{
static void Main()
{
X value1 = (X)Enum.Parse(typeof(X), "CPU");
X value2;
Enum.TryParse("CPU", out value2);
Console.WriteLine(value1);
Console.WriteLine(value2);
Console.ReadKey();
}
}
public enum X
{
CPU
}
}
并测试它。猜猜看,一切都按预期工作。所以不,你不需要使用注释。