Сбор данных от пользователя в Enum

Итак, я беру урок по C# и в настоящее время пытаюсь взять довольно простую программу и сделать ее немного более сложной. Однако мои навыки в GoogleFU не совсем работают. Я надеялся на небольшую помощь и небольшое объяснение, так как все, что объясняет в Интернете, делается с точки зрения экспертов, а не с точки зрения новичков.

Итак, в основном, объявлен тип перечислителя, и я знаю, что вы можете вставить строки кода, чтобы коммутатор мог принять решение в зависимости от того, что определено или выбрано. Однако я бы хотел, чтобы это происходило в интерактивном режиме, чтобы пользователь мог ввести значение из списка перечисления, а затем сделать так, чтобы функция switch сделала свое дело. Я пробовал несколько разных вещей, и ничего не работает. Имейте в виду, я программист на Perl, PHP и PowerShell, и я пробовал некоторые вещи, которые работали во всех из них, но я не могу заставить его работать правильно. Anywho, ниже код. Любая помощь с благодарностью!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
class Program
{
    enum Color
    {
        red,
        orange,
        blue,
        black,
        white,
        green,
        purple,
        yellow
    }
    static void Main(string[] args)
    {
       Color favorite = Color + Console.ReadLine();
        switch (favorite)
        {
            case Color.red:
                Console.WriteLine("You chose red!");
                break;
            case Color.orange:
                Console.WriteLine("you chose orange!!!!!!");
                break;
            case Color.blue:
                Console.WriteLine("YOU CHOSE BLUEEEE!!");
                break;               
            case Color.black:
                Console.WriteLine("you chose black");
                break;
            case Color.white:
                Console.WriteLine(" you chose white!")
                    break;
            case Color.green:
                Console.WriteLine("you chose green!!!!!");
                break;
            case Color.purple:
                Console.WriteLine("you chose purple!!");
                break;
            case Color.yellow:
                Console.WriteLine("you chose yellow!!!");
                break;
        }
        Console.ReadLine();




    }
}

}

3 ответа

Решение

Вы ищете метод Enum.TryParse. Он преобразует строку в тип enum и возвращает false, если строка не может быть преобразована в перечисление.

Color favorite 
if (Enum.TryParse(Console.ReadLine(), out favorite)) {
   // You're switch goes where
}
else {
   Console.WriteLine("That's not a color!");
}

Если ваш ввод в форме "Красный", "Оранжевый" и т. Д., То вы можете использовать Enum.Parse():

var favorite = (Color)Enum.Parse(typeof(Color), Console.ReadLine());

Имейте в виду, что если пользователь введет плохой цвет, он выдаст исключение, в этом случае вы можете использовать TryParse.

Изменить назначение любимого.

var input = Console.ReadLine();
var favorite = (Color)Enum.Parse(typeof(Color), input);
Другие вопросы по тегам