Der zugrunde liegende Typ Ihres Enum int ist nach wie vor, nur, dass es von char
zu int
aus irgendeinem Grund eine implizite Konvertierung ist . Ihre Enum entspricht
TransactionTypeCode { Shipment = 83, Receipt = 82, }
Beachten Sie auch, dass enum
can have any integral type as underlying type except char
, wahrscheinlich aus irgendeinem semantischen Grund. Dies ist nicht möglich:
TransactionTypeCode : char { Shipment = 'S', Receipt = 'R', }
zurück char
Wert zu erhalten, können Sie einfach eine Besetzung verwenden.
var value = (char)TransactionTypeCode.Shipment;
// or to make it more explicit:
var value = Convert.ToChar(TransactionTypeCode.Shipment);
Die zweite verursacht Boxen, und sollte daher schlimmer vor. So kann etwas besser sein ist
var value = Convert.ToChar((int)TransactionTypeCode.Shipment);
aber hässlich. Bei gegebenem Leistungs/Lesbarkeits-Kompromiss bevorzuge ich die erste (Cast-) Version.
Eigentlich ist es ein wenig komplexer, ich kopierte den Code falsch aus meiner Probe, Sie können keine Zeichenfolgen für Werte in einer Aufzählung haben.Die vollständige Antwort wäre also ((char) instance.Shipment), ToString() –
@GeorgeMauer Der "zugrunde liegende Typ" Ihrer enum ist immer noch "int", so dass Ihre Definition wirklich sagt: 'enum TransactionTypeCode {Shipment = 83, Receipt = 82,} '. Es gibt eine implizite Umwandlung von 'char' nach' int', aus irgendeinem Grund. Das einzige "Problem" (das kein Problem sein könnte) mit Ihrer Enum ist, dass 'default (TransactionTypeCode)' keinen Namen hat, da kein Member gleich 0 (oder ''\ 0'') ist. –
Diese Antwort ist auf jeder Ebene kategorisch falsch. Beginnen Sie mit der Tatsache, dass es nicht kompiliert wird, und fahren Sie mit der Tatsache fort, dass Aufzählungen keine Zeichenfolgen sind, dass Zeichen keine Zeichenfolgen sind und dass der zugrunde liegende Typ der Aufzählung nicht - und nicht - eine Zeichenfolge sein kann . –