Comment convertir une string en Enum avec C# ?

Apprenez à convertir une chaîne de caractère vers une énumération en quelques lignes de code !

Article publié le 06/11/2022, dernière mise à jour le 19/09/2023

Le C# étant un langage strictement typé, donc même si une chaîne de caractère correspond parfaitement à la valeur d'une énumération, elle ne pourra pas être castée automatiquement.

Solution

Pour transformer/convertir une string en une valeur d'enum, il faudra utiliser la méthode suivante :

bool success = Enum.TryParse("stringValue", out TestEnum enumValue);

Cette méthode Enum.TryParse est disponible en .NET Core and .NET Framework ≥4.0, et le mot clé "out" va permettre d'initialiser et d'assigner une variable directement en la passant en paramètre de la fonction (disponible en C#7).

Voici un code contenant tout le contexte pour y voir plus clair :


enum TestEnum
{
    Zero,
    One
}

static void Main(string[] args)
{
    string rawValue = "Zero";
    bool success = Enum.TryParse(rawValue, out TestEnum enumValue);
    if (success) {
        Console.WriteLine(enumValue.ToString());
    } else
    {
        Console.WriteLine("Couldn't convert");
    }
}

Attention : Même lorsque la conversion échoue, la variable de sortie ( avec le mot clé out) sera mise par défaut à la première valeur de l'Enum !

Il faut donc toujours avoir une condition qui vérifie l'état de retour de la méthode Enum.TryParse !


Fotis Fotopoulos sur Unsplash

Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant