SarahN SarahN - 2 months ago 26
C# Question

How can I retrieve Enum from char value? (C#)

I have the following enum

public enum MaritalStatus
Married = 'M',
Widow = 'W',
Widower = 'R',

In one function I have for exp:
, and I need to have

How can I get the enum from the character value ?
for string I found this solution , but it gets exception for Char.

YourEnum foo = (YourEnum) Enum.Parse(typeof(YourEnum), yourString);

Any help?


The enum values, though defined with chars actually equal to the int representation of that char. It is as if you defined it as following:

public enum MaritalStatus
    Married = 77,
    Widow = 87,
    Widower = 82,

Convert char to int and then assign to the enum:

int m = 'M'; // char of `M` equals to 77
MaritalStatus status = (MaritalStatus)m;  

Console.WriteLine(status == MaritalStatus.Married); // True
Console.WriteLine(status == MaritalStatus.Single); // False

After playing with it a bit and putting it into a one liner I see that even the conversion to an int is not needed. All you need is to cast as the enum:

MaritalStatus status = (MaritalStatus)'M'; // MaritalStatus.Married