C # Enum in String auto-Konvertierung?
-
26-09-2019 - |
Frage
Ist es möglich, den Compiler automatisch konvertieren meine Enum-Werte in Strings, damit ich ausdrücklich die ToString-Methode jedes Mal aufrufen vermeiden. Hier ist ein Beispiel dafür, was Ich mag würde tun:
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
Lösung
Nein. Ein ENUM ist seine eigene Art, wenn Sie es auf etwas anderes konvertieren möchten, müssen Sie einige Arbeit tun.
Allerdings, je nachdem, was Sie mit ihm tun, werden einige Aufgaben nennen ToString () auf sie automatisch für Sie. Zum Beispiel können Sie tun:
Console.Writeline(Rank.A);
Andere Tipps
Sie sind wahrscheinlich nicht für Aufzählungen suchen selbst, sondern eine Liste von String-Konstante. Es kann besser auf Ihre Bedürfnisse in einigen Szenarien passen.
Verwenden Sie stattdessen:
public static class Rank
{
public const string A = "A";
public const string B = "B";
public const string C = "C";
}
Nein, aber zumindest kann man die Dinge mit Aufzählungen tun, die ihre ToString()
Methoden aufrufen, wenn Sie ihre String-Wert verwenden können müssen, z.
Console.WriteLine(Rank.A); //prints "A".
Die richtige Syntax sollte
myRank.ToString("F");
[Achtung, hack] nicht sicher, ob diese böse ist, mir scheint es, einen vernünftigen Kompromiss.
var myEnumAsString = MyEnum+"";
Console.WriteLine(myEnumAsString); //MyEnum
Dies wird implizit ToString Kraft ()