如何从字符串输入获取Display Enum值

时间:2019-07-20 07:48:31

标签: c# enums

如何通过输入获取枚举的值?

enum Planets
{
   Mercury = 0,
   Venus,
   Earth
}

例如,当用户输入字符串时,我希望得到该输入的Enum整数值。

UserInput: Mercury

Value: 0

我做了这样的事情:

Console.WriteLine("Value: "+(Planets)UserInput);

您可能会猜到它不会编译。

2 个答案:

答案 0 :(得分:2)

var planet = (Planets)Enum.Parse(typeof(Planets), UserInput);
int planetNumber = (int)planet;

答案 1 :(得分:1)

首先,您必须将输入字符串转换为您选择的枚举。可以使用Enum.Parse(Type, String)

Planets planet = Enum.Parse(typeof(Planets), "Mercury")

然后,您需要从枚举中获取数值,该数值可以简单地转换为整数:

int value = (int)planet;

在第一步时要小心:如果用户输入的字符串无效,您将收到必须处理的异常。为避免这种情况,您可以使用Enum.TryParse()方法,该方法返回表示操作成功的布尔值,并将结果枚举作为out参数传递。

Planets result;
bool success = Enum.TryParse<Planets>("Mars", true, out result);
if(success){
    Console.Write((int)result);
} else {
    Console.Write("no match");
}