C# Converter String em Enum

Minahil Noor 12 outubro 2023
  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