-1

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

hp.ItemSubType.Add((ItemSubtype)Enum.Parse(typeof(ItemSubtype), subTypeString));

这是枚举定义:

public enum ItemSubtype
    {
        ADSComputer,
        // Bunch of values
        CPU
    }

现在,即使 的值为subTypeString例如“CPU”,它也不会匹配 enum 中的任何内容。我们必须为此使用注释吗?

4

3 回答 3

0

只是猜测和提示:C# 区分大小写,因此CpuCPU. TryParse此外,您可以使用使代码更具可读性并能够处理无效输入的泛型:

ItemSubtype itemType;
bool canParse = Enum.TryParse<ItemSubtype>("cpu", out itemType);  // false
if(canParse)
{
    hp.ItemSubType.Add(itemType);
}
于 2013-10-09T09:03:56.843 回答
0

添加中的问题而不是解析中的问题我已经测试了解析

var subTypeString = "CPU"; var test = Enum.Parse(typeof(ItemSubtype), subTypeString); 

检查您的集合类型(hp.ItemSubType)它必须具有与枚举相同的类型!

于 2013-10-09T09:06:17.663 回答
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
    }
}

并测试它。你猜怎么着,一切都按预期工作。所以不,您不需要使用注释。

于 2013-10-09T09:06:33.590 回答