2009-06-16 151 views
0

我有以下代碼。鑄造枚舉

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = "VALUE1"; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
} 

在頁面加載中,在轉換後,我有變量'test'='VALUE2'的值。

我期待它得到test ='VALUE1'。這有什麼錯的代碼

+0

這是什麼語言? – 2009-06-16 12:23:56

+0

這是C#/ ASP.NET – 2009-06-16 13:34:20

回答

6

你不能簡單地把字符串值回枚舉,你必須分析它:

MyEnum enumValue = (MyEnum) Enum.Parse(typeof(MyEnum), (string)Session["EnumValue"]); 
+0

好的。該代碼沒有顯示任何錯誤。這是正常的行爲嗎? – Ashok 2009-06-16 12:33:32

2

你爲什麼用字符串工作的不枚舉? Like:

private Enum MyEnum 
{ 
    VALUE1=5, VALUE2=4, VALUE3=3, VALUE4=2, VALUE5=1 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["EnumValue"] = MyEnum.VALUE1; 
    MyEnum test = (MyEnum) Session["EnumValue"]; 
}