C# Convert String to enum

Minahil Noor 12 octobre 2023
  1. Conversion d’une string en enum en C# - Utilisation des méthodes Enum.Parse() et Enum.TryParse()
  2. Conclusion
C# Convert String to enum

En C#, nous utilisons les méthodes Enum.Parse() et Enum.TryParse() pour convertir une chaîne de caractères en un enum. Nous avons donné ici des exemples pour les deux, mais nous vous recommandons d’utiliser la méthode Enum.TryParse() pour convertir une chaîne de caractères en un enum.

Conversion d’une string en enum en C# - Utilisation des méthodes Enum.Parse() et Enum.TryParse()

Pour convertir une chaîne de caractères en un enum, nous pouvons utiliser la méthode Enum.Parse(). Vous devrez inclure soigneusement System en haut de votre fichier car Enum.Parse() est une méthode statique.

Le type d’énumération, la valeur de la chaîne et un indicateur (facultatif) sont les paramètres de cette méthode. La syntaxe correcte pour utiliser Enum.Parse() et Enum.TryParse() est la suivante:

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

Nous allons maintenant l’implémenter dans un programme c#.

Programme C# pour convertir une string en un enum en utilisant 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");
    }
  }
}

Production:

The Flower is Rose

Nous avons ici une énumération appelée Flowers contenant de multiples constantes avec leurs valeurs respectives. Nous avons appelé la méthode Enum.Parse() pour convertir la valeur de la chaîne Rose en un énumé. Le typeof(Flowers) renverra le type d’énumération. Au final, nous avons vérifié si notre conversion a réussi ou non.

Parfois, une exception peut se produire si la chaîne que nous essayons de convertir n’est pas disponible dans l’énumération. Pour éviter cela, nous utiliserons le bloc try-catch.

Programme C# pour convertir une string en un enum avec traitement des exceptions en utilisant la méthode 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;
    }
  }
}

Production:

Not Possible

Programme C# pour convertir une chaîne en un enum en utilisant 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);
    }
  }
}

Production:

True

Nous pouvons aussi passer la valeur de la constante dans enum comme paramètre dans la méthode Enum.TryParse(). Le programme suivant implémente ceci:

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

Production:

Rose

Vous pouvez aussi vérifier que la valeur de la chaîne que vous voulez convertir est définie dans enum ou non en utilisant la méthode Enum.IsDefined().

Programme C# pour vérifier l’existence de la valeur de la chaîne en utilisant la méthode 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"));
  }
}

Production:

True

Conclusion

Enum.Parse() et Enum.TryParse() sont les méthodes qui sont utilisées pour convertir une chaîne de caractères en un enum. Mais la meilleure pratique consiste à utiliser Enum.TryParse().

Article connexe - Csharp String

Article connexe - Csharp Enum