首页 > 解决方案 > 为什么枚举不会触发默认选项?

问题描述

编辑:

该程序仍然无法正常工作。我尝试实施建议的更改,这似乎确实是解决方案。但是,现在对程序的任何输入都会导致默认语句。我们做错了什么?

具有以下更改的新代码:

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();
            {

标签: c#enums

解决方案


因为您已经处理了所有可用的值。尝试下一个案例:

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;
    }
}

推荐阅读