13

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.

mathinvalidnik
  • 1,566
  • 10
  • 35
  • 57

4 Answers4

7

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"); 
Sergey Berezovskiy
  • 232,247
  • 41
  • 429
  • 459
5

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.

CloudyMarble
  • 36,908
  • 70
  • 97
  • 130
5

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.

Matthew Watson
  • 104,400
  • 10
  • 158
  • 276
3

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

Joe Ratzer
  • 18,176
  • 3
  • 37
  • 51