Question

If I had the value : "dog" and the enumeration:

public enum Animals
{
  dog = 0 ,
  cat = 1 ,
  rat = 2
}

how could I get 0 for the value "dog" from Animals ?

EDIT:

I am wondering if there is index like acces. More commonn : how can I get the integer for string value.

Was it helpful?

Solution 2

To answer your question "how can I get the integer for string value":

To convert from a string into an enum, and then convert the resulting enum to an int, you can do this:

public enum Animals
{
    dog = 0,
    cat = 1,
    rat = 2
}

...

Animals answer;

if (Enum.TryParse("CAT", true, out answer))
{
    int value = (int) answer;
    Console.WriteLine(value);
}

By the way, normal enum naming convention dictates that you should not pluralize your enum name unless it represents flag values (powers of two) where multiple bits can be set - so you should call it Animal, not Animals.

OTHER TIPS

Just cast your enum value to integer:

Animals animal = Animals.dog;
int value = (int)animal; // 0

EDIT: if it turns out that you have name of enum value, then parse enum value and cast it to integer:

int value = (int)Enum.Parse(typeof(Animals), "dog"); 

You can either cast it to Int, or iterate over all values using the Enum.GetValues Method which retrieves an array of the values of the constants in a specified enumeration.

What about: var r = (int)Animals.dog

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top