如何获取枚举成员的指定值?

时间:2014-03-20 14:05:07

标签: c# .net enums

以下代码返回一,二,三,我希望GetNames这样做,GetValues返回2,5,10:

enum Nums
{
  One = 2,
  Two = 5,
  Three = 10 
}

class Program
{
  static void Main()
  {
    var vals = Enum.GetValues(typeof(Nums));
  }
}

这里有什么?如何从类型Nums获取值2,5,10?

4 个答案:

答案 0 :(得分:3)

将它转换为这样的int:

int value = (int)Num;

答案 1 :(得分:1)

您需要将其强制转换为int:

int val = (int)Nums.One;

或者回答你关于获取枚举中所有项目的问题:

IEnumerable<int> values = Enum.GetValues(typeof(Nums)).Cast<int>();

答案 2 :(得分:1)

你可以这样做:

int[] vals = Enum
    .GetValues(typeof(Nums)) // Thus far, this is your code
    .Cast<int>()             // Cast individual elements to int
    .ToArray();              // Convert the result to array

Here is a demo on ideone.

答案 3 :(得分:0)

我还没有完全包围C#Enums,但Enum.GetValues文档中有一个示例,显示了对它们有一些非常有趣和强大的效果。 http://msdn.microsoft.com/en-us/library/system.enum.getvalues(v=vs.110).aspx

using System;

enum SignMagnitude { Negative = -1, Zero = 0, Positive = 1 };

public class Example
{
   public static void Main()
   {
      foreach (var value in Enum.GetValues(typeof(SignMagnitude))) {
         Console.WriteLine("{0,3}     0x{0:X8}     {1}",
                           (int) value, ((SignMagnitude) value));
}   }
}
// The example displays the following output: 
//         0     0x00000000     Zero 
//         1     0x00000001     Positive 
//        -1     0xFFFFFFFF     Negative