如何在Enumeration中获取枚举值的int

mat*_*nik 6 c# enums enumeration

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

public enum Animals
{
  dog = 0 ,
  cat = 1 ,
  rat = 2
}
Run Code Online (Sandbox Code Playgroud)

我怎么能从动物的价值"狗"得到0?

编辑:

我想知道是否有像索引这样的索引.更常见的是:如何获取字符串值的整数.

Ser*_*kiy 7

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

Animals animal = Animals.dog;
int value = (int)animal; // 0
Run Code Online (Sandbox Code Playgroud)

编辑:如果事实证明你有枚举值的名称,那么解析枚举值并将其转换为整数:

int value = (int)Enum.Parse(typeof(Animals), "dog"); 
Run Code Online (Sandbox Code Playgroud)


Clo*_*ble 5

您可以将其强制转换为Int,也可以使用Enum.GetValues方法迭代所有值,该方法检索指定枚举中常量值的数组.


Mat*_*son 5

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

要将字符串转换为枚举,然后将生成的枚举转换为int,您可以执行以下操作:

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);
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,正常的枚举命名约定规定你不应该复数你的枚举名称,除非它代表可以设置多个位的标志值(2的幂) - 所以你应该调用它Animal,而不是Animals.