Перечисление C # с помощью оператора switch - как использовать пользовательский ввод - PullRequest
0 голосов
/ 15 февраля 2019

Пытаясь выучить 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 голосов
/ 15 февраля 2019

Вы можете использовать метод 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
}

Поскольку соответствующие процедуры отображения жестко запрограммированы, имеет смысл также жестко кодировать режимы.

...