我将从查询字符串中获取枚举值。
例如,假设我有这个枚举:
Enum MyEnum
{
Test1,
Test2,
Test3
}
我将从传入的查询字符串中获取值,所以:
string myEnumStringValue = Request["somevar"];
myEnumStringValue可以是“0”,“1”,“2”
我需要根据该字符串值取回实际的枚举常量。
我可以创建一个接受字符串然后执行case语句的方法
case "0":
return MyEnum.Test1;
break;
但必须有一种更容易或更光滑的方式来做到这一点吗?
答案 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
即可。但是,这应该快一点。