使用enum和switch语句c#

使用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

我使用枚举作为switch语句的选项,它可以工作。问题是,如果用户输入无效选项,程序将崩溃。我应该添加什么以便使用默认值

我的枚举类

    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才可能;其次,如果希望断言字符串应该是有效的枚举,那么解析是完全正确的。