如何将 console.readline 转换为枚举?

问题描述

我有这个星期几的枚举。我有变量“工作日”将其转换为枚举类型。当我想通过键盘输入日期时,出现错误“无法将字符串类型隐式转换为 NameDia.CS.Program.Days”

**namespace NombreDia_CS
{
    class Program
    {
        enum Dias
        {
            Domingo = 1,Lunes,Martes,Miercoles,Jueves,Viernes,Sabado
        }

        static void Main(string[] args)
        {

            Dias diaSemana;

            Console.WriteLine("Ingresar un valor numerico: ");

            diaSemana = Console.ReadLine(); //the error here
            

            
        }
    }
}**

解决方法

Console.ReadLine() 返回一个字符串,因此您必须将其转换为整数,然后将其转换为枚举。

diaSemana = (Dias)Convert.ToInt32(Console.ReadLine());

或者你可以在 C# 7+ 中做这样的事情,它会解析字符串,并用相应的 Dias 成员初始化 diaSemana

Enum.TryParse(Console.ReadLine(),out Dias diaSemana);

这也是一样的

Dias diaSemana;
Enum.TryParse(Console.ReadLine(),out diaSemana)