11

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,486
  • 10
  • 33
  • 56

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
  • 224,436
  • 37
  • 411
  • 441
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,156
  • 70
  • 93
  • 127
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
  • 96,889
  • 9
  • 144
  • 240
3

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

Joe Ratzer
  • 17,513
  • 3
  • 35
  • 51