我使用枚举作为switch语句的选项,它可以工作。问题是如果用户输入无效选项,程序崩溃。我应该添加什么以便使用默认值?
我的枚举课
public enum Options : byte
{
Display = 1,
Add,
Toggle,
Max,
Mean,
Medium,
Exit
}
在主要的我的开关语句中
string volString = Console.ReadLine();
Options options = (Options)Enum.Parse(typeof(Options), volString);
// this is the line that is giving me the runtime error. Since other options are not found
枚举中的程序崩溃了。
switch (options)
{
case Options.Display: //dispaly regular time
case Options.Toggle://toggle
default:
Console.WriteLine("entry blah blah");
break;
答案 0 :(得分:5)
而不是Enum.Parse
使用Enum.TryParse
...这将返回一个布尔值,表示文本是否可以转换为您的枚举。如果确实如此,请运行您的开关,否则会通知用户他们输入的字符串无效。
答案 1 :(得分:4)
改为使用Enum.TryParse
:
Options options;
if(!Enum.TryParse(volString, out options)) {
// It wasn't valid input.
}
答案 2 :(得分:2)
怎么样:
Options value;
if(!Enum.TryParse(volString, out value)) // note implicit <Options>
value = Options.SomeDefaultValue;
答案 3 :(得分:0)
查看Enum.TryParse(...)您可以使用它来检查无效字符串。