C# Enum.Parse总是失败

C# Enum.Parse总是失败,c#,enums,C#,Enums,我正在尝试解析字符串并将其转换为枚举。我不能在代码的这个区域使用字典,所以我使用Enum.Parse()。但是,它总是失败,即使传递的字符串应该与枚举完全匹配。这是C代码: 这是枚举定义: public enum ItemSubtype { ADSComputer, // Bunch of values CPU } 现在,即使subsubstring的值是,例如,“CPU”,它也不会匹配枚举中的任何内容。我们是否有来使用注释呢?只

我正在尝试解析字符串并将其转换为枚举。我不能在代码的这个区域使用字典,所以我使用Enum.Parse()。但是,它总是失败,即使传递的字符串应该与枚举完全匹配。这是C代码:

这是枚举定义:

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
    }
}