C# Converter String em Enum

Minahil Noor 30 janeiro 2023 1 novembro 2020
  1. C# string a enum Conversão - Utilizando Enum.Parse() e Enum.TryParse() Métodos
  2. C# Programa para converter string em um enum com tratamento de exceções utilizando Enum.Parse() Método
  3. C# Programa para converter string em um enum Utilizando Enum.TryParse()
  4. C# Programa para verificar a existência do valor da string utilizando Enum.IsDefined() Método
  5. Conclusão:
C# Converter String em Enum

Em C# utilizamos métodos Enum.Parse() e Enum.TryParse() para converter uma string em um enum. Aqui demos exemplos para ambos, mas recomendamos que você utilize o método Enum.TryParse() ao converter uma string em um enum.

C# string a enum Conversão - Utilizando Enum.Parse() e Enum.TryParse() Métodos

A fim de converter uma string em um enum, podemos utilizar o método Enum.Parse(). Você terá que incluir cuidadosamente System no topo de seu arquivo como Enum.Parse() é um método estático.

O tipo de enum, o valor da string e um indicador (opcional) são os parâmetros deste método. A sintaxe correta para utilizar Enum.Parse() e Enum.TryParse() é a seguinte:

EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue);
EnumName VariableName= (EnumName)Enum.Parse(typeof(EnumName), StringValue,indicator); //indicator can be true or false
//To implement Enum.TryParse()
EnumName VariableName;
Enum.TryParse(StringValue, out VariableName);

Agora vamos implementar isto em um programa c#.

C# Programa para converter string em um enum Utilizando Enum.Parse()

using System;
class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         string stringvalue = "Rose";
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
          //To check if we have converted successfully
         if(Flower == Flowers.Rose)
         {
            Console.WriteLine("The Flower is Rose");
         }
      }
}

Resultado:

The Flower is Rose

Aqui temos um enumero chamado Flowers contendo múltiplas constantes com seus respectivos valores. Chamamos Enum.Parse() método para converter o valor da string Rose em um enumero. O typeof(Flowers) retornará o tipo de enumeração. No final, verificamos se nossa conversão foi bem sucedida ou não.

Algumas vezes, pode ocorrer uma exceção se a string que estamos tentando converter não estiver disponível no enumero. Para evitar isso, utilizaremos o bloco try-catch.

C# Programa para converter string em um enum com tratamento de exceções utilizando Enum.Parse() Método

using System;

class Conversion{
      enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      static void Main()
      {
         stringvalue = "Jasmine";
         try
         {
         Flowers Flower = (Flowers)Enum.Parse(typeof(Flowers), stringvalue);
         }
         catch (Exception ex)
         {
         Console.WriteLine("Not Possible");
         //Set value to none
         Flower = Flowers.none;
         }
      }
}

Resultado:

Not Possible

C# Programa para converter string em um enum Utilizando Enum.TryParse()

using System;
enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         string stringvalue = "Rose";
         //Using Enum.TryParse() 
         Flowers Flower;
         if(Enum.TryParse(stringvalue, out Flower))
         {
            Console.WriteLine(Flower == Flowers.Rose);
         }
      }
}

Resultado:

True

Também podemos passar o valor de constante em enumeração como parâmetro no método Enum.TryParse(). O programa seguinte implementa isto:

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
class Conversion
{
      static void Main()
      {
         Flowers Flower;
         
         if(Enum.TryParse("3", out Flower))
         {
            Console.WriteLine(Flower);
         }
      }
}

Resultado:

Rose

Você também pode verificar se o valor da string que deseja converter está definido no enum ou não utilizando o método Enum.IsDefined().

C# Programa para verificar a existência do valor da string utilizando Enum.IsDefined() Método

using System;

enum Flowers
      {
         None,
         Daisy= 1,
         Lili = 2,
         Rose = 3
      }
      
class Conversion{
      
      static void Main()
      {
         Console.WriteLine(Enum.IsDefined(typeof(Flowers), "Rose"));
      }
}

Resultado:

True

Conclusão:

Enum.Parse() e Enum.TryParse() são os métodos que são utilizados para converter uma string em um enum. Mas é a melhor prática utilizar Enum.TryParse().

Artigo relacionado - Csharp String

Artigo relacionado - Csharp Enum