C# Convertir Cadena a enum

Minahil Noor 12 octubre 2023
  1. C# Conversión de string a enum - Usando los métodos Enum.Parse() y Enum.TryParse()
  2. Programa de C# para convertir cadena en un enum usando Enum.Parse()
  3. C# Programa para convertir cadena en un enum con manejo de excepciones usando el método Enum.Parse()
  4. Programa C# para convertir la Cadena en un enum usando Enum.TryParse()
  5. C# Programa para comprobar la existencia del valor de la cadena usando el método Enum.IsDefined()
  6. Conclusión
C# Convertir Cadena a enum

En C# usamos los métodos Enum.Parse() y Enum.TryParse() para convertir una cadena en un enum. Aquí hemos dado ejemplos para ambos, pero le recomendamos que utilice el método Enum.TryParse() al convertir una cadena en un enum.

C# Conversión de string a enum - Usando los métodos Enum.Parse() y Enum.TryParse()

Para convertir una cadena en un enum, podemos usar el método Enum.Parse(). Tendrás que incluir cuidadosamente System en la parte superior de tu archivo ya que Enum.Parse() es un método estático.

El tipo Enum, el valor de la cadena y un indicador(opcional) son los parámetros de este método. La sintaxis correcta para usar Enum.Parse() y Enum.TryParse() es la siguiente:

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

Ahora vamos a implementar esto en un programa C#.

Programa de C# para convertir cadena en un enum usando 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");
    }
  }
}

Producción :

The Flower is Rose

Aquí tenemos una lista llamada Flower que contiene múltiples constantes con sus respectivos valores. Hemos llamado al método Enum.Parse() para convertir el valor de la cadena Rose en un enum. El typeof(Flowers) devolverá el tipo de enum. Al final, hemos comprobado si nuestra conversión tuvo éxito o no.

A veces, puede ocurrir una excepción si la cadena que intentamos convertir no está disponible en el enum. Para evitar esto, usaremos el bloque de prueba.

C# Programa para convertir cadena en un enum con manejo de excepciones usando el método Enum.Parse()

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

Producción :

Not Possible

Programa C# para convertir la Cadena en un enum usando 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);
    }
  }
}

Producción :

True

También podemos pasar el valor de la constante en enum como parámetro en el método Enum.TryParse(). El siguiente programa implementa esto:

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

Producción :

Rose

También podemos comprobar si el valor de la cadena que queremos convertir está definido en enum o no usando el método Enum.IsDefined().

C# Programa para comprobar la existencia del valor de la cadena usando el método Enum.IsDefined()

using System;

enum Flowers { None, Daisy = 1, Lili = 2, Rose = 3 }

class Conversion {
  static void Main() {
    Console.WriteLine(Enum.IsDefined(typeof(Flowers), "Rose"));
  }
}

Producción :

True

Conclusión

Enum.Parse() y Enum.TryParse() son los métodos que se usan para convertir una cadena en un enum. Pero la mejor práctica es usar Enum.TryParse().

Artículo relacionado - Csharp String

Artículo relacionado - Csharp Enum