【问题标题】:Can enums return string instead of an integer? [duplicate]枚举可以返回字符串而不是整数吗? [复制]
【发布时间】:2016-03-04 09:31:24
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

  • 你怎么称呼你的枚举成员?

标签: c# c#-4.0 enums


【解决方案1】:

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

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

你可以用同样的方式访问它们:

string creditCardValue = TransactionType.CreditCard;

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

例子:

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

【讨论】:

  • 关于您编辑的答案,我也发现了该解决方案。但我希望它对使用我的 API 的开发人员来说就像一个枚举。我认为在第二种解决方案中您需要以不同的方式访问。
  • @NecatiHakanErdogan 是的,我认为除了使用反射之外没有其他方法可以访问它们。获取描述真的很不方便。
【解决方案2】:

不,没有办法。 您可以在 int、long、byte、short 之间进行选择——通常是数字类型。

您可以“作弊”,仅针对 char 值(因为 char 被隐式转换为 int):

public enum MyEnum
{
   Value = 'a'
}

【讨论】:

    猜你喜欢
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2018-10-24
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多