下面的代码返回1,2,3,我希望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 ?
将其强制转换为int类型,如下所示:
int value = (int)Num;
需要将其强制转换为int类型:
int val = (int)Nums.One;
或者回答您关于获取枚举中所有项的问题:
IEnumerable<int> values = Enum.GetValues(typeof(Nums)).Cast<int>();
你可以这样做:
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
我还没有完全了解c#枚举,但是枚举。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