Question

Est-il possible d'avoir le compilateur convertir automatiquement mes valeurs Enum à des chaînes afin que je puisse éviter d'appeler explicitement la méthode ToString chaque fois. Voici un exemple de ce que je voudrais faire:

enum Rank { A, B, C }

Rank myRank = Rank.A;
string myString = Rank.A; // Error: Cannot implicitly convert type 'Rank' to 'string'
string myString2 = Rank.A.ToString(); // OK: but is extra work
Était-ce utile?

La solution

Non. Un ENUM est son propre type si vous voulez convertir à autre chose, vous devez faire un certain travail.

Toutefois, en fonction de ce que vous faites avec elle, certaines tâches appelleront ToString () sur automatiquement pour vous. Par exemple, vous pouvez faire:

Console.Writeline(Rank.A);

Autres conseils

Vous n'êtes pas probablement à la recherche énumérations lui-même, mais une liste de constante de chaîne. Il peut répondre à vos besoins mieux dans certains scénarios.

Utilisez ceci:

public static class Rank
{
   public const string A = "A";
   public const string B = "B";
   public const string C = "C";
}

Non, mais au moins vous pouvez faire des choses avec les énumérations qui appelleront leurs méthodes de ToString() quand vous pourriez avoir besoin d'utiliser leur valeur de chaîne, par exemple:.

Console.WriteLine(Rank.A); //prints "A".

La syntaxe correcte doit être

myRank.ToString("F");

[Attention, bidouille] Pas sûr de savoir si cela est méchant, pour moi, il semble un compromis raisonnable.

var myEnumAsString = MyEnum+""; Console.WriteLine(myEnumAsString); //MyEnum

Cela forcera ToString implicite ()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top