Saeid Yazdani Saeid Yazdani - 1 year ago 111
C# Question

How to define an enum with string value?

I am trying to define an

and add valid common separators which used in CSV or similar files. Then I am going to bind it to a
as a data source so whenever I add or remove from the Enum definition, I would not need to change anything in the combo box.

The problem is how can I define enum with string representation, something like:

public enum SeparatorChars{Comma = ",", Tab = "\t", Space = " "}

Answer Source

You can't - enum values have to be integral values. You can either use attributes to associate a string value with each enum value, or in this case if every separator is a single character you could just use the char value:

enum Separator
    Comma = ',',
    Tab = '\t',
    Space = ' '

(EDIT: Just to clarify, you can't make char the underlying type of the enum, but you can use char constants to assign the integral value corresponding to each enum value. The underlying type of the above enum is int.)

Then an extension method if you need one:

public string ToSeparatorString(this Separator separator)
    // TODO: validation
    return ((char) separator).ToString();
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download