C# Enum.Parse总是失败
我正在尝试解析字符串并将其转换为枚举。我不能在代码的这个区域使用字典,所以我使用Enum.Parse()。但是,它总是失败,即使传递的字符串应该与枚举完全匹配。这是C代码: 这是枚举定义:C# Enum.Parse总是失败,c#,enums,C#,Enums,我正在尝试解析字符串并将其转换为枚举。我不能在代码的这个区域使用字典,所以我使用Enum.Parse()。但是,它总是失败,即使传递的字符串应该与枚举完全匹配。这是C代码: 这是枚举定义: public enum ItemSubtype { ADSComputer, // Bunch of values CPU } 现在,即使subsubstring的值是,例如,“CPU”,它也不会匹配枚举中的任何内容。我们是否有来使用注释呢?只
public enum ItemSubtype
{
ADSComputer,
// Bunch of values
CPU
}
现在,即使subsubstring
的值是,例如,“CPU”,它也不会匹配枚举中的任何内容。我们是否有来使用注释呢?只是一个猜测和提示:C是区分大小写的,所以Cpu
与Cpu
不同。此外,您还可以使用泛型,这样可以使代码更具可读性,还可以处理无效输入:
ItemSubtype itemType;
bool canParse = Enum.TryParse<ItemSubtype>("cpu", out itemType); // false
if(canParse)
{
hp.ItemSubType.Add(itemType);
}
ItemSubtype itemType;
bool canParse=Enum.TryParse(“cpu”,out itemType);//假的
if(canParse)
{
hp.ItemSubType.Add(itemType);
}
添加而非解析中的问题我已经测试了解析
var subTypeString = "CPU"; var test = Enum.Parse(typeof(ItemSubtype), subTypeString);
检查您的集合类型(hp.ItemSubType),它必须具有相同的枚举类型 好吧,如果我写这段代码
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
}
}
并测试它。你猜怎么着,一切正常。因此,不需要使用注释。是否有异常消息?事实上,我看不到任何明显的问题;可能是一个难以识别的空白?对于每个方法调用,您可能希望将代码分成单独的一行,这样您就可以看到它在哪里,也可以告诉我们hp是什么吗?总结上述所有问题:请发布一个。我将此标记为答案,因为代码是正确的。但是,根本原因是ItemSubType属性没有在构造函数中正确实例化。因此,问题确实存在于其他地方,而不是在解析过程中。@astar,分而治之。
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
}
}