c# - 输出导致项目名称而不是枚举类型?
问题描述
我试图让用户从枚举列表中进行选择,然后使用 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();
}
}
}
解决方案
您需要阅读用户的输入:
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。我会把剩下的留给你去解决。
推荐阅读
- python - 如何在 Django 中制作日期范围过滤器?
- sql - Microsoft Azure DevOps SQL 查询显示历史?如何仅显示活动请求
- windows-server - Wiki.js 未作为 Windows 服务运行
- json - 如何通过 Python 将 dict/json 保存到我的计算机上的文件
- sftp - SFTP - 115 或 22 的正确端口答案是什么?
- postgresql - 缓慢的并发 postgres 插入带有索引的单独表中
- arrays - mongodb:是否可以对数组数组中的第一项进行范围搜索
- azure - 如何在 Azure 中运行发出 HTTP 请求并将结果存储在存储容器中的重复性任务?
- python - 处理位于不同目录中并使用 python (fastavro) 相互引用的多个 AVRO (avsc 文件)
- python - 从同一数据框中创建多个 seaborn 重叠的热图