Besseren Weg, Um Char Enum
Ist es ein sauberer Weg, um den char-Wert eines enum in C#.
public enum DivisionStatus
{
None = 'N',
Active = 'A',
Inactive = 'I',
Waitlist = 'W'
}
string status = Enums.DivisionStatus.Active.ToString()[0].ToString(); //"A"
OmG... Gut, dass du hier gefragt.
Sie waren sich zu Fragen, ob ein Reiniger Weg, um den char-Wert, aber du bekommst nicht den char-Wert überhaupt. Sie bekommen das erste Zeichen der Namen der Konstanten. Wenn Sie änderungen an den char-Wert von Active auf 'B', das Ergebnis würde immer noch "Eine".
Sie waren sich zu Fragen, ob ein Reiniger Weg, um den char-Wert, aber du bekommst nicht den char-Wert überhaupt. Sie bekommen das erste Zeichen der Namen der Konstanten. Wenn Sie änderungen an den char-Wert von Active auf 'B', das Ergebnis würde immer noch "Eine".
InformationsquelleAutor Mike Flynn | 2011-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur cast Wert:
Beachten Sie, dass dies den Wert verwenden, der anstelle des Bezeichners. Die
Enums.DivisionStatus.Active
Wert wird der Zeichencode der'A'
, denn das ist der Wert, den Sie definiert haben.Verwenden Sie den Wert direkt ist schneller als die Suche die Kennung für den Wert.
Ich bereits entfernt, aus der Antwort.
Ich denke ich nicht erklären, es richtig. Wenn ich wollte, es hat einen string als das Endergebnis und nicht nur ein char.
Ich sehe, bin ich davon ausgegangen, dass Sie wollte, einen char-Wert, wenn Sie aufgefordert, einen char-Wert. 😉 Dann fügen Sie einfach
.ToString()
am Ende, das ist der einfachste Weg, um eine Zeichenfolge aus der Aufzählung Wert.InformationsquelleAutor Guffa
Baue ich eine "pseudo-enum", der das problem löst. In Ihrem Fall könnte es so Aussehen:
Können Sie es verwenden, wie ein enum, das gibt dem char enum-Wert auf ToString() ohne Gießen:
InformationsquelleAutor Christoph Brückmann
Können Sie auch eine statische Klasse. Obwohl, wenn Sie immer mit den Werten, die als Zeichenketten, Sie könnte genauso gut machen Sie jede Eigenschaft, die einen string statt. Ein Vorteil dieser Methode ist, dass Sie können fügen Sie Beschreibungen für jedes Element, das in die InteliSense.
InformationsquelleAutor Jason L.
var status = (char)Enums.DivisionStatus.Active;
sollte genau das tun, was Sie wollen. Die Art und Weise Sie Taten, bevor Sie es hätte nicht funktioniert, wenn das erste Zeichen des enum-text hat nicht die zugrunde liegenden char-Wert.Dies funktioniert auch für enums, die einen int als Unterlage geben.
InformationsquelleAutor Daniel Mann
Einfache casting funktioniert, ich habe es versucht:
InformationsquelleAutor kol
Ich würde nur werfen die enum-Wert, ohne Aufruf von ToString:
Oder vielleicht Sie würde tun müssen,
InformationsquelleAutor phoog