C#enum使用switch语句 - 如何使用用户输入

问题描述 投票:0回答:1

在尝试学习C#Im时尝试使用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!");
        }
    }
}

c# enums switch-statement
1个回答
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
}

由于相应的显示例程是硬编码的,因此对模式进行硬编码也是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.