Stack Overflow em Português Asked by Thulio Mariano on December 11, 2021
Meu código exibe erro ao usar o Enum.Parse<enum>(Console.ReadLine());
Estou pedindo para o usuário digitar o nível do cargo ocupado, porem para receber os dados digitados pelo usuário o Parse<> exibe erro, não passa para o Level
.
Classe program
static void Main(string[] args)
{
Console.WriteLine("Enter client data: ");
Console.Write("Name: ");
string clientName = Console.ReadLine();
Console.Write("Email: ");
string email = Console.ReadLine();
Console.Write("Birth date (DD/MM/YYYY): ");
DateTime birthDate = DateTime.Parse(Console.ReadLine());
Console.WriteLine("Enter order data: ");
Console.Write("Level: (Junior/MidLevel/Senior) ");
OrderStatus Level = Enum.Parse<OrderStatus>(Console.ReadLine());
}
classe Enums
enum OrderStatus : int
{
Junior = 0,
MidLevel = 1,
Senior = 2
}
Erro CS0308 O método não genérico “Enum.Parse(Type, string)” não pode ser usado como argumentos de tipo SalesOrde
//class program main ----------------------------------------------
using System;
namespace Worker
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter client data: ");
Console.Write("Name: ");
string clientName = Console.ReadLine();
Console.Write("Email: ");
string email = Console.ReadLine();
Console.Write("Birth date (DD/MM/YYYY): ");
DateTime birthDate = DateTime.Parse(Console.ReadLine());
Console.WriteLine("Enter order data: ");
Console.Write("Level: (Junior/MidLevel/Senior) ");
Enum.TryParse(Console.ReadLine(), out OrderStatus level);
}
}
}
// enums ----------------------------------------------
namespace Worker.Entities.Enums
{
enum OrderStatus : int
{
Junior,
MidLevel,
Senior
}
}
Answered by Fernando Lucas Souza on December 11, 2021
Você não deveria usar o Parse()
, isto está explicado em Diferenças entre Parse vs TryParse. Usando o TryParse()
ficaria assim e funciona:
using System;
using static System.Console;
public class Program {
static int Main() {
WriteLine("Enter client data: ");
Write("Name: ");
string clientName = ReadLine();
Write("Email: ");
string email = ReadLine();
Write("Birth date (DD/MM/YYYY): ");
if (!DateTime.TryParse(ReadLine(), out var birthDate)) return 1;
WriteLine("Enter order data: ");
Write("Status: ");
if (!Enum.TryParse<OrderStatus>(ReadLine(), true, out var status)) return 1;
return 0;
}
}
enum OrderStatus {
Junior = 0,
MidLevel = 1,
Senior = 2
}
Veja funcionando no ideone. E no .NET Fiddle. Também coloquei no GitHub para referência futura.
Ainda acho preocupante essa coisa de deixar a pessoa digitar o nível, mas como solução simples até passa se usar o TryParse()
, sem ele não pode usar em hipótese alguma, não é robusta.
Answered by Maniero on December 11, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP