首页 > 解决方案 > 输出导致项目名称而不是枚举类型?

问题描述

我试图让用户从枚举列表中进行选择,然后使用 Switch 根据输入获取输出。

在这种情况下使用枚举的最有效方法是什么?

namespace enum_assignment
{
   class Program
  {
    enum transportation
    { Car = 20,
      Cab = 10,
      Bus = 5,
      Bicycle = 3,
    };

    static void Main(string[] args)
    {
        Console.WriteLine("Welcome to Kelvin Transit Center");
        Console.WriteLine();

        Type enumType;
        enumType = typeof(transportation);

        Console.WriteLine("Available transit methods:{0}", Environment.NewLine);
        foreach (int value in Enum.GetValues(enumType))
        Console.WriteLine("{0}:{1} dollars", Enum.GetName(enumType, value), value);

        Console.WriteLine("Please enter your method of transporatation: Car,Bus,Cab,Bicycle");
        Console.ReadLine();


        transportation defaultMthd = transportation.Bicycle;
        foreach (int value in Enum.GetValues(enumType))

        switch(defaultMthd)
        {
            case transportation.Bicycle:
            Console.WriteLine("Thank you for choosing {0},it is {1} every hour.",enumType, value);
            break;

            case transportation.Bus:
            Console.WriteLine("Thank you for choosing {0},it is {1} every hour.",enumType, value);
            break;

            case transportation.Cab:
            Console.WriteLine("Thank you for choosing {0},it is {1} every hour.",enumType, value);
            break;

            case transportation.Car:
            Console.WriteLine("Thank you for choosing {0},it is {1} every hour.",enumType, value);
            break;
        }
    Console.WriteLine();
    Console.ReadKey();

    }
}

}

标签: c#

解决方案


您需要阅读用户的输入:

var userInput = Console.ReadLine();

然后解析它以获取选择的方法:

transportation method = (transportation)Enum.Parse(enumType, userInput);

然后当你打印它时,再次打印出用户输入:

Console.WriteLine("Thank you for choosing {0},it is {1} every hour.", userInput, value);

完成此工作后,如果用户输入无效输入,您可能会发现程序崩溃。在这种情况下,您需要查看Enum.TryParse。我会把剩下的留给你去解决。


推荐阅读