使用switch语句的C#枚举-如何使用用户输入

时间:2019-02-15 16:15:24

标签: c# enums switch-statement

尝试学习C#时 我正在尝试使用Enum和switch语句。如何将用户输入传递给变量,以便让他选择枚举中的选项之一?

传递用户输入的正确方法是什么?

我的代码如下:

using System;

namespace switchDemo
{
    class Program
    {
        enum Movies
        {
            LOTR,
            Starwars,
            Matirx
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Choose the best movie (LOTR, Starwars, Matirx): ");
            Movies bestMovie = Convert.ToString(Console.ReadLine());

            //Movies bestMovie = Movies.LOTR;

            switch (bestMovie)
            {
                case Movies.LOTR:
                    Console.WriteLine("thats correct - LOTR");
                    break;
                case Movies.Matirx:
                    Console.WriteLine("Martix is not the best");
                    break;
                case Movies.Starwars:
                    Console.WriteLine("StarWars is 2nd best");
                    break;
                default:
                    Console.WriteLine("choose an option");
                    break;
            }

            Console.WriteLine("Hello World!");
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您可以使用Enum.TryParse方法将string转换为enum

if (Enum.TryParse<Movies>(Console.ReadLine(), ignoreCase: true, out var bestMovie)) {
    switch (bestMovie) {
        case Movies.LOTR:
            break;
        case Movies.Starwars:
            break;
        case Movies.Matirx:
            break;
        default:
            break;
    }
} else {
    Console.WriteLine("Unknown movie");
}

我知道这只是一种练习,但是由于可用电影的集合可能会发生变化,因此将其公式化为enum并不是最佳选择。在现实生活中的应用程序中,您将电影信息保存在数据库中(“真实”文件或XML文件,文本文件等)。最好对常量使用枚举。例如

enum DisplayMode
{
    Basic,
    Advanced
}

由于对相应的显示例程进行了硬编码,因此也可以对模式进行硬编码。