关于C#:如何获取枚举中枚举值的int

How to get the int for enum value in Enumeration

本问题已经有最佳答案,请猛点这里访问。

如果我有值:"dog"和枚举:

1
2
3
4
5
6
public enum Animals
{
  dog = 0 ,
  cat = 1 ,
  rat = 2
}

我怎么能从动物身上得到"狗"这个值的0呢?

编辑:

我想知道是否有类似索引的科目。更常见的是:如何获得字符串值的整数。


只需将枚举值强制转换为整数:

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

编辑:如果发现您具有枚举值的名称,则分析枚举值并将其强制转换为整数:

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


要回答您的问题"如何获得字符串值的整数":

要将字符串转换为枚举,然后将结果枚举转换为int,可以执行以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
}

顺便说一下,通常的枚举命名约定规定,除非枚举名称表示可以设置多个位的标志值(2的幂),否则不应将其复数,因此应将其称为Animal,而不是Animals


您可以将其强制转换为int,或者使用enum.getValues方法迭代所有值,该方法检索指定枚举中常量的值数组。


怎么办:var r = (int)Animals.dog