C# 枚举能否返回字符串而不是整数?

C# 枚举能否返回字符串而不是整数?,c#,c#-4.0,enums,C#,C# 4.0,Enums,我希望枚举返回字符串值。不是枚举描述,它们必须返回一个字符串值,而不是int。下面的代码示例正是我所想的,但显然没有编译 public enum TransactionType { CreditCard = "C", DebitCard = "D", CreditCardAuthenticationWithAuthorization = "CA", DebitCardAuthenticationWithAuthorization = "DA" } 有什么想法吗?

我希望枚举返回字符串值。不是枚举描述,它们必须返回一个字符串值,而不是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
命名空间中使用,但您的枚举仍将具有基础数值,因此可能这并不完全是您所需要的

例如:

public enum TransactionType
{
   [Description("C")]
   CreditCard,
   ...
}
不,不可能。 您可以在int、long、byte和short(通常是数字类型)之间进行选择

只能对
char
值执行“一些欺骗”(因为
char
隐式转换为int):


你如何准确地称呼你的枚举成员?关于你编辑过的答案,我也发现了这个解决方案。但是我想让它看起来就像一个枚举,对于使用我的API的开发者来说。我认为在第二个解决方案中,您需要以不同的方式访问它们。@NecatiHakanErdogan是的,我认为除了使用一些反射之外,没有其他方法可以访问它们。要得到描述真的很不方便。
public enum MyEnum
{
   Value = 'a'
}