关于C#:无法将字符串转换为创建的枚举类型i

Cannot convert string to Enum type I created

本问题已经有最佳答案,请猛点这里访问。

我有一个枚举:

1
2
3
4
5
6
public enum Color
{
    Red,
    Blue,
    Green,
}

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

1
2
3
4
class TestClass
{
    public Color testColor = Color.Red;
}

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

有什么帮助吗?

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

你在找这样的东西吗?

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


尝试:

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

请参见有关枚举的文档

编辑:在.NET 4.0中,您可以使用更为类型安全的方法(以及在解析失败时不引发异常的方法):

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


正如其他人所说:

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

如果由于collectionofstrings是对象集合而出现问题,请尝试以下操作:

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

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

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