我有一个像
的枚举public enum Test {a = 1, b, c, d, e }
然后我有一个方法,我传递'a'作为参数,但我需要从枚举中检索相应的值并从方法返回Integer
值
public int Getvalue(string text)
{
int value = //Need to convert text in to int value.
return value;
}
我将text
作为“a”或“b”或“c”传递,但结果需要1,2或3。我已尝试在线找到一些解决方案,但似乎所有人都希望我在枚举中添加[Description]
标记以获得价值。
是否可以从C#中的枚举中获取值?
答案 0 :(得分:3)
您不必添加description标记,只要您将枚举值作为字符串传递,因为a
,b
存在于枚举中,您可以使用{{3要将字符串解析为枚举Test
,然后您可以获得相应的值,如:
var value = Enum.Parse(typeof(Test), "a");
int integerValue = (int)value;
或者您可以使用Enum.Parse,如果输入字符串无效,则不会引发异常。像:
Test temp;
int integerValue;
if (Enum.TryParse("a", out temp))
{
integerValue2 = (int)temp;
}
答案 1 :(得分:3)
对于Framework> = 4.0,您可以使用Enum.TryParse
public int GetValue(string text)
{
Test t;
if (Enum.TryParse(text, out t)
return (int)t;
// throw exception or return a default value
}
答案 2 :(得分:1)
通用助手,使您能够获得任何类型的枚举值
public static int? GetValue<T>(string text)
{
var enumType = typeof (T);
if (!enumType.IsEnum)
return null;
int? val;
try
{
val = (int) Enum.Parse(enumType, text);
}
catch (Exception)
{
val = null;
}
return val;
}