如何在枚举中获取枚举值的 int [重复]

Posted

技术标签:

【中文标题】如何在枚举中获取枚举值的 int [重复]【英文标题】:How to get the int for enum value in Enumeration [duplicate] 【发布时间】:2014-02-02 06:26:03 【问题描述】:

如果我有值:“狗”和枚举:

public enum Animals

  dog = 0 ,
  cat = 1 ,
  rat = 2

我如何从 Animals 中得到值“dog”的 0?

编辑:

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

【问题讨论】:

【参考方案1】:

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

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

编辑:如果你有枚举值的名称,则解析枚举值并将其转换为整数:

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

【讨论】:

他的字符串不是枚举。 @TuTran 你能说他编辑了问题吗? 我认为OP的问题很明确:how could I get 0 for the value "dog" @TuTran 如你所见,不清楚【参考方案2】:

回答你的问题“我怎样才能得到字符串值的整数”:

要将字符串转换为枚举,然后将生成的枚举转换为 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);

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

【讨论】:

【参考方案3】:

您可以cast it to Int 或使用Enum.GetValues 方法迭代所有值,该方法检索指定枚举中常量值的数组。

【讨论】:

【参考方案4】:

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

【讨论】:

需要先将"dog"解析为Animals.dog @Tu Tran - 真的,你确定吗?我不同意……你自己试试。 绝对确定。看看 Matthew Watson 的回答,我完全同意他的看法。 @Tu Tran - 请复制并粘贴我的代码并自己尝试。 因为该问题已被编辑(正如 Sergey Berezovskiy 注意到的那样),我认为您应该再次检查该问题。

以上是关于如何在枚举中获取枚举值的 int [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中获取枚举索引值

如何有效地获取枚举中每个值的值和属性?

Swift枚举使用String值获取Int Enum的值

如何在java中制作像枚举一样的键值[重复]

GraphQL 是不是将 Int 作为枚举

如何获取枚举的属性[重复]