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

时间:2016-03-04 09:31:24

标签: c# c#-4.0 enums

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

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

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

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

string creditCardValue = TransactionType.CreditCard;

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

示例:

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

答案 1 :(得分:1)

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

你可以做某些作弊",仅适用于char值(因为char被隐含地转换为int):

public enum MyEnum
{
   Value = 'a'
}