列挙型の基になる型は引き続き int ですが、何らかの理由でからchar
への暗黙的な変換があるだけです。int
あなたの列挙型はと同等です
TransactionTypeCode { Shipment = 83, Receipt = 82, }
また、おそらく何らかの意味上の理由で、enum
を除く基本型として任意の整数型を持つことができることにchar
注意してください。これは不可能です:
TransactionTypeCode : char { Shipment = 'S', Receipt = 'R', }
値をchar
戻すには、キャストを使用できます。
var value = (char)TransactionTypeCode.Shipment;
// or to make it more explicit:
var value = Convert.ToChar(TransactionTypeCode.Shipment);
2 番目のものはボクシングを引き起こすため、パフォーマンスが低下するはずです。だから少し良いかもしれません
var value = Convert.ToChar((int)TransactionTypeCode.Shipment);
しかし醜い。パフォーマンスと読みやすさのトレードオフを考えると、最初の (キャスト) バージョンを好みます..