初学,请问一下,枚举可以转成String类,为什么String类不可以转成枚举的值。在线,急,加上100分
enum TestEnum
{
Zero=0,One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
}
------------------
问题:
string s = TestEnum.Eight.ToString();//这样是可行的
//但是以下却不行??
string i= "8 ";
TestEnum TE = (TestEnum)i;
这样为什么不行,请高手给说说
------解决方案--------------------// 等价字符串名称
string str = "One ";
TestEnum _one = (TestEnum)Enum.Parse(typeof(TestEnum), str);
// 等价字符串值
int n = 1;
TestEnum _one2 = (TestEnum)n;
// OR
TestEnum _one3 = (TestEnum)Enum.Parse(typeof(TestEnum), n.ToString());
------解决方案--------------------数据类型要一致。
------解决方案--------------------C#入门经典上就有这段解释..
要获得枚举的字符串值,可以使用Convert.ToString()或变量本身的ToString()命令,直接使用(string)数据类型转换时不行的,因为需要进行的处理并不仅仅是把存储在枚举变量的数据放在string变量中。
如果要把string转换为枚举值,可以使用Enum.Parse()进行转换,其使用方式如下:
(enumerationType)Enum.Parse(typeof(enumerationType), enumerationValueString)
string myString = "NORTH ";
myDirection = (Orientation)Enum.Parse(typeof(Orientation), myString);
当然,因为并不是所有的字符串值都可以映射为一个Orientation值。如果一个值不能映射为枚举值中的一个,就会产生一个错误,与C#中的其他值一样,这些值是区分大小写的。