不能字符串转换为枚举类型,我创建
我有一个枚举:不能字符串转换为枚举类型,我创建
public enum Color
{
Red,
Blue,
Green,
}
现在,如果我读这些颜色从一个XML文件中的文字串,我怎么能转换为枚举类型颜色。
class TestClass
{
public Color testColor = Color.Red;
}
现在,通过使用一个字符串,像这样设置该属性的时候,我从编译器很严厉的警告。 :D无法从字符串转换为颜色。
任何帮助?
TestClass.testColor = collectionofstrings[23].ConvertToColor?????;
是这样的东西你在找什么?
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);
尝试:
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23]);
编辑:在.NET 4.0中,你可以使用不抛出异常时,更类型安全的方法(和一个解析失败):
Color myColor;
if (Enum.TryParse(collectionofstring[23], out myColor))
{
// Do stuff with "myColor"
}
它说我无法从对象转换为彩色。任何帮助? – 2010-01-04 00:20:54
然后,您可能会在Parse调用前忘记将颜色转换为Color。这肯定是从字符串到枚举的方法。 – 2010-01-04 00:24:18
@MattGreer当解析“失败”时,这是一个更好的方法,如果你关心*。这是真的,如果它不能被真正解析,它不会抛出异常,但它会返回枚举中的任何'0'项,并且你不知道它实际上失败了。 – mmcrae 2016-01-14 22:35:17
您需要使用Enum.Par SE将字符串转换为正确的颜色枚举值:
TestClass.testColor = (Color)Enum.Parse(typeof(Color), collectionofstrings[23], true);
至于其他人说:
TestClass.testColor = (Color) Enum.Parse(typeof(Color), collectionofstrings[23]);
如果你有一个问题,因为collectionofstrings
是对象的集合,然后尝试这个:
TestClass.testColor = (Color) Enum.Parse(
typeof(Color),
collectionofstrings[23].ToString());
无法将类型对象隐式转换为颜色(枚举)。 在这种情况下我能做些什么? – 2010-01-04 00:19:29
@Sergio然后你错过了明确的演员(彩色) – pauloya 2011-08-23 09:59:12