铸造到Enum

时间:2009-06-16 12:16:52

标签: enums casting

我有以下代码。

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'。代码

有什么问题吗?

2 个答案:

答案 0 :(得分:6)

你不能简单地将字符串值强制转换回Enum,你必须解析它:

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

答案 1 :(得分:2)

为什么使用字符串而不使用枚举?像:

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