枚举可以返回字符串而不是整数吗?

我希望我的枚举返回字符串值。 不是Enum Description,它们必须返回一个字符串值,而不是int。 下面的代码示例正是我的想法,但显然无法编译。

public enum TransactionType { CreditCard = "C", DebitCard = "D", CreditCardAuthenticationWithAuthorization = "CA", DebitCardAuthenticationWithAuthorization = "DA" } 

有任何想法吗?

你不能,你可以做的是创建一个静态类,它“行为”有点像带有字符串值的枚举:

 public static class TransactionType { public const string CreditCard = "C"; ... } 

您可以使用相同的方式访问它们:

 string creditCardValue = TransactionType.CreditCard; 

另一种选择是使用System.ComponentModel命名空间中的DescriptionAttribute ,但是你的枚举仍然会有底层数值,所以也许这并不完全是你需要的。

例:

 public enum TransactionType { [Description("C")] CreditCard, ... } 

不,没有办法。 您可以选择int,long,byte,short – 通常是数字类型。

你可以做一些“作弊”,仅用于char值(因为char是implicity铸造到int):

 public enum MyEnum { Value = 'a' }