Sara N
Sara N

Reputation: 1189

How can I retrieve Enum from char value?

I have the following enum

public enum MaritalStatus
{
    Married = 'M',
    Widow = 'W',
    Widower = 'R',
    Single='S'
}

In one function I have for exp: 'S' , and I need to have MaritalStatus.Single.

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);

Upvotes: 15

Views: 12251

Answers (4)

gdpm27
gdpm27

Reputation: 11

I was able to read the enum value of the character by changing the charValue to string and then reading the first character and casting it to my ENUM type.

Looks like this in code :

( Marital Status ) ( charValue.ToString ( ) [ 0 ] )

Upvotes: 0

Vivek Nuna
Vivek Nuna

Reputation: 1

There are multiple ways to get the enum Name from value.

string name =   ((MaritalStatus)'S').ToString();
string enumName =  Enum.GetName(typeof(MaritalStatus), 'S');

In C# 6.0 you can use nameof

Upvotes: 3

Sara N
Sara N

Reputation: 1189

I guess found One solution for that:

   (MaritalStatus)Enum.ToObject(typeof(MaritalStatus), 'S')

It gets me MaritalStatus.Single

Enum.ToObject(enumType, byte) is the signature.

Upvotes: 6

Gilad Green
Gilad Green

Reputation: 37299

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,
    Single=83
} 

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

Upvotes: 12

Related Questions