Базовым типом вашего перечисления по-прежнему является 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);
Второй вызывает бокс, и, следовательно, должен преформ хуже. Так что может быть чуть лучше
var value = Convert.ToChar((int)TransactionTypeCode.Shipment);
но безобразно. Учитывая компромисс между производительностью и читабельностью, я предпочитаю первую (кастовую) версию ..