无法将字符串转换为我创建的枚举类型

时间:2010-01-04 00:12:53

标签: c# string enums

我有一个枚举:

public enum Color
{
    Red,
    Blue,
    Green,
}

现在,如果我将这些颜色作为XML文件中的文字字符串读取,我该如何将其转换为枚举类型Color。

class TestClass
{
    public Color testColor = Color.Red;
}

现在,当使用像这样的文字字符串设置该属性时,我会收到编译器发出的非常严厉的警告。 :D无法从字符串转换为颜色。

任何帮助?

TestClass.testColor = collectionofstrings[23].ConvertToColor?????;

4 个答案:

答案 0 :(得分:32)

这就是你想要的东西吗?

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);

答案 1 :(得分:8)

尝试:

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);

请参阅documentation about Enum

.NET 4.0中的

编辑:可以使用更安全的类型(也可以在解析失败时抛出异常):

Color myColor;
if (Enum.TryParse(collectionofstring[23], out myColor))
{
    // Do stuff with "myColor"
}

答案 2 :(得分:0)

您需要使用Enum.Parse将字符串转换为正确的Color枚举值:

TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true);

答案 3 :(得分:0)

正如其他人所说:

TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]);

如果您遇到问题,因为collectionofstrings是对象的集合,请尝试以下操作:

TestClass.testColor = (Color) Enum.Parse(
    typeof(Color), 
    collectionofstrings[23].ToString());
相关问题