c# - 为什么枚举不会触发默认选项?
问题描述
编辑:
该程序仍然无法正常工作。我尝试实施建议的更改,这似乎确实是解决方案。但是,现在对程序的任何输入都会导致默认语句。我们做错了什么?
具有以下更改的新代码:
public class Processor
{
public void DisplayEmployers()
{
Console.WriteLine("Select an option");
Console.WriteLine("1. Lawyer");
Console.WriteLine("2. Admin");
Console.WriteLine("3. Receptionist");
Console.ReadLine();
}
public enum Staff { Lawyer, Admin, Receptionist, UnsupportedValue }
public void ChooseTypeOfEmployer()
{
Staff s = (Staff.UnsupportedValue);
switch (s)
{
case Staff.Lawyer:
ProvideLogin();
break;
case Staff.Admin:
ProvideLogin();
break;
case Staff.Receptionist:
ProvideLogin();
break;
default:
Console.WriteLine("Invalid input");
break;
}
}
public void ProvideLogin()
{
string username, password;
Console.WriteLine("Please provide username to access the system");
{
Console.WriteLine("Input a username: ");
username = Console.ReadLine();
Console.WriteLine("Input as password: ");
password = Console.ReadLine();
{
解决方案
因为您已经处理了所有可用的值。尝试下一个案例:
public enum Staff { Lawyer, Admin, Receptionist, UnsupportedValue }
public void ChooseTypeOfEmployer()
{
Staff s = (Staff.UnsupportedValue);
switch (s)
{
case Staff.Lawyer:
ProvideLogin();
break;
case Staff.Admin:
ProvideLogin();
break;
case Staff.Receptionist:
ProvideLogin();
break;
default:
Console.WriteLine("Invalid input");
break;
}
}
++ 你可以简化你的代码
public void ChooseTypeOfEmployer()
{
Staff s = (Staff.UnsupportedValue);
switch (s)
{
case Staff.Lawyer:
case Staff.Admin:
case Staff.Receptionist:
ProvideLogin();
break;
default:
Console.WriteLine("Invalid input");
break;
}
}
推荐阅读
- python - 找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/login/login1
- javascript - 连接页面和 React-bootstrap Nav
- yaml - YAML 配置将一个属性值替换为另一个属性值
- flutter - StreamProvider 更新时如何让 Navigator 保持在活动路径上?
- java - 如何在Java中使用字符串获取对象
- android - 必须单击对话框两次才能关闭,从首选项片段中的 listpreference 启动对话框
- python-3.x - apscheduler+scrapy+asyncio 无法顺利执行第一个任务
- reactjs - 如何在传递给复选框的字符串中添加锚标记
- javascript - Google Chrome 扩展程序:如何在地址栏中添加图标?
- node.js - 处理nodejs数据库异步函数的最佳方法是什么