使用enum和switch语句c#

时间:2012-01-08 00:10:30

标签: c# enums switch-statement

我使用枚举作为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;

4 个答案:

答案 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(...)您可以使用它来检查无效字符串。