2009-06-16 8 views
0

次のコードがあります。Enumへのキャスト

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

これはどの言語ですか? –

+0

これはC#/ ASP.NET –

答えて

6

に何か問題があり、あなたはそれを解析する必要があります。

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

です。コードにエラーが表示されていません。それは正常な行動ですか? – Ashok

+1

通常は、Joopの答えのように、列挙型ではなく列挙型の値を使用します。 –

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"]; 
} 
+0

ASP Classic 3.0がセッション中の文字列以外の文字列をサポートしていなかった2001年のコードでしょうか?#historylesson –

+0

約2年前の回答に良いコメントがありました;) – Joop

+0

私はそれをメタ履歴にすると思いますか? ASP Classicは商業用コーディングの紹介であり、私の記憶に燃えています。 –

関連する問題