返回基于传入字符串值的枚举常量

时间:2010-06-17 19:03:14

标签: c#

我将从查询字符串中获取枚举值。

例如,假设我有这个枚举:

Enum MyEnum
{
    Test1,
    Test2,
    Test3
}

我将从传入的查询字符串中获取值,所以:

string myEnumStringValue = Request["somevar"];

myEnumStringValue可以是“0”,“1”,“2”

我需要根据该字符串值取回实际的枚举常量。

我可以创建一个接受字符串然后执行case语句的方法

case "0":
    return MyEnum.Test1;
    break;

但必须有一种更容易或更光滑的方式来做到这一点吗?

3 个答案:

答案 0 :(得分:8)

查看Enum.Parse,它可以将名称或值转换为正确的枚举值。

完成后,将结果转换为MyEnum并调用ToString()以获取常量的名称。

return ((MyEnum)Enum.Parse(typeof(MyEnum), Request["somevar"])).ToString();

答案 1 :(得分:2)

此任务有内置功能:

MyEnum convertedEnum = (MyEnum) Enum.Parse(typeof(MyEnum), myEnumStringValue);

答案 2 :(得分:2)

您需要解析字符串以获取其整数值,将值转换为Enum类型,然后获取枚举值的名称,如下所示:

string myEnumStringValue = ((MyEnum)int.Parse(Request["somevar"])).ToString();

编辑:或者,您只需致电Enum.Parse即可。但是,这应该快一点。