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

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

public enum Animals
{
  dog = 0 ,
  cat = 1 ,
  rat = 2
}

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

编辑:

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

【问题讨论】:

    标签: c# enums enumeration


    【解决方案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 注意到的那样),我认为您应该再次检查该问题。
        猜你喜欢
        • 1970-01-01
        • 2012-12-28
        • 2017-10-08
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 2018-04-05
        • 1970-01-01
        相关资源
        最近更新 更多