使用enum和switch语句c#
我使用枚举作为switch语句的选项,它可以工作。问题是,如果用户输入无效选项,程序将崩溃。我应该添加什么以便使用默认值 我的枚举类使用enum和switch语句c#,c#,enums,switch-statement,C#,Enums,Switch Statement,我使用枚举作为switch语句的选项,它可以工作。问题是,如果用户输入无效选项,程序将崩溃。我应该添加什么以便使用默认值 我的枚举类 public enum Options : byte { Display = 1, Add, Toggle, Max, Mean, Medium, Exit } 在我的switch语句中 string volString
public enum Options : byte
{
Display = 1,
Add,
Toggle,
Max,
Mean,
Medium,
Exit
}
在我的switch语句中
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;
使用
Enum.TryParse
代替Enum.Parse
。。。这将返回一个布尔值,表示文本是否可以转换为枚举。如果是真的,则运行开关,否则通知用户他们输入了无效字符串。而不是Enum.Parse
使用Enum.TryParse
。。。这将返回一个布尔值,表示文本是否可以转换为枚举。如果是真的,请运行开关,否则会通知用户他们输入了无效字符串。查看Enum.TryParse(…)您可以使用它检查无效字符串。查看Enum.TryParse(…)您可以使用它检查无效字符串。改用:
改用:
那么:
Options value;
if(!Enum.TryParse(volString, out value)) // note implicit <Options>
value = Options.SomeDefaultValue;
选项值;
if(!Enum.TryParse(volString,out value))//注释隐式
value=Options.SomeDefaultValue;
那么:
Options value;
if(!Enum.TryParse(volString, out value)) // note implicit <Options>
value = Options.SomeDefaultValue;
选项值;
if(!Enum.TryParse(volString,out value))//注释隐式
value=Options.SomeDefaultValue;
你会遇到什么样的运行时错误?你会遇到什么样的运行时错误?我仍然认为这不准确。@Steve:噢,谢谢你指出这一点。(是的,我是VB.NET的人。)我仍然不认为这是准确的。@Steve:噢,谢谢你指出这一点。(是的,我是一个VB.NET的人。)谢谢,使用Enum对我来说是一件新鲜事。我想知道为什么enum parse是一个选项,tryparse更有意义。@Aaron首先,“out T”在没有泛型的情况下是不可能的,所以直到.net 2才可能;其次,如果您想断言字符串应该是有效的枚举,那么解析是完全正确的。我想知道为什么enum parse是一个选项,tryparse更有意义。@Aaron首先,“out T”在没有泛型的情况下是不可能的,所以直到.net 2才可能;其次,如果希望断言字符串应该是有效的枚举,那么解析是完全正确的。