日期:2014-05-18  浏览次数:20477 次

初学,请问一下,枚举可以转成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#中的其他值一样,这些值是区分大小写的。