【问题标题】:C# - Can you call an Enum by the number value? [duplicate]C# - 你可以通过数值调用枚举吗? [复制]
【发布时间】:2017-05-30 17:09:55
【问题描述】:

如果我有这个代码

//Spice Enums
enum SpiceLevels {None = 0 , Mild = 1, Moderate = 2, Ferocious = 3};

其中说明了枚举名称 + 他们的编号,我如何从变量中调用枚举,比如变量是否为 3,我如何让它调用并显示 Ferocious?

【问题讨论】:

  • 作为回答,您可以只转换 int 值。但请记住,enum 可以有多次相同的值。在这种情况下,将返回第一个元素。

标签: c#


【解决方案1】:

只需将整数转换为枚举:

SpiceLevels level = (SpiceLevels) 3;

当然反过来也可以:

int number = (int) SpiceLevels.Ferocious;

另见MSDN

每个枚举类型都有一个底层类型,它可以是除 char 之外的任何整数类型。枚举元素的默认底层类型是 int。

...

但是,从枚举类型转换为整数类型需要显式转换

【讨论】:

    【解决方案2】:
    enum SpiceLevels { None = 0, Mild = 1, Moderate = 2, Ferocious = 3 };
    static void Main(string[] args)
    {
        int x = 3;
        Console.WriteLine((SpiceLevels)x);
        Console.ReadKey();
    }
    

    【讨论】:

      【解决方案3】:

      默认情况下,枚举从 Int32 继承,因此每个项目都分配有一个数值,从零开始(除非您自己指定值,就像您所做的那样)。

      因此,获取枚举只是将 int 值转换为枚举的一种情况......

      int myValue = 3;
      SpiceLevels level = (SpiceLevels)myValue;
      WriteLine(level); // writes "Ferocious"
      

      【讨论】:

        猜你喜欢
        • 2011-11-28
        • 1970-01-01
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        相关资源
        最近更新 更多