如何通过输入获取枚举的值?
enum Planets
{
Mercury = 0,
Venus,
Earth
}
例如,当用户输入字符串时,我希望得到该输入的Enum整数值。
UserInput: Mercury
Value: 0
我做了这样的事情:
Console.WriteLine("Value: "+(Planets)UserInput);
您可能会猜到它不会编译。
答案 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");
}