如何定义一个带有字符串值的枚举?

165
我正在尝试定义一个枚举Enum,并添加在CSV或类似文件中使用的有效通用分隔符。然后,我将把它绑定到一个ComboBox作为数据源,这样每当我添加或删除枚举定义时,我就不需要在组合框中更改任何内容。
问题是如何定义具有字符串表示的枚举,例如: public enum SeparatorChars{Comma = ",", Tab = "\t", Space = " "}

2
FYI,有一个专门处理这个问题的库:https://www.nuget.org/packages/EnumStringValues/,它实现了Amit Rai Sharma的解决方案。 - Brondahl
21个回答

0
尽管派对已经结束了,但对于偶然发现这个SO帖子的任何人来说,你总是可以像这样自定义一些东西,这样你就可以像处理常规的枚举类型一样处理你的“模拟”枚举类型,并且还可以通过MyEnumObject.Value访问“底层”的字符串值。
public class MyEnumType
{
    public readonly string Value;

    public static readonly MyEnumType MyStringEnum1 = new MyEnumType("String 1");
    public static readonly MyEnumType MyStringEnum2 = new MyEnumType("String 2");
    public static readonly MyEnumType MyStringEnum3 = new MyEnumType("String 3");
    public static readonly MyEnumType MyStringEnum4 = new MyEnumType("String 4");

    private MyEnumType(string value)
    { this.Value = value; }
}

使用方法:

public string? MyStringEnumMethod(MyEnumType enumObj)
{
    switch (enumObj)
    {
        case MyEnumType.MyStringEnum1:
            //Do something
            return enumObj.Value;
        case MyEnumType.MyStringEnum3:
            //Do something else
            return enumObj.Value;
        default:
            return null;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接