在C#中从枚举中获取int值

我有一个名为问题'(复数)的类。在这个类中,有一个叫做问题'(单数)的枚举,看起来像这样。

public enum Question
{
    Role = 2,
    ProjectFunding = 3,
    TotalEmployee = 4,
    NumberOfServers = 5,
    TopBusinessConcern = 6
}

问题'类中,我有一个get(int foo)'函数,为该foo'返回一个问题'对象。有没有一种简单的方法从枚举中获取整数值,以便我可以做类似于`Questions.Get(Question.Role)'的事情?

解决办法

只需将该枚举抛出,例如

int something = (int) Question.Role;

上述方法对你在野外看到的绝大多数枚举都有效,因为枚举的默认底层类型是`int'。

然而,正如cecilphillip所指出的,枚举可以有不同的基础类型。 如果一个枚举被声明为 "uint"、"long "或 "ulong",它应该被转换为该枚举的类型;例如,对于

enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};

你应该使用

long something = (long)StarsInMilkyWay.Wolf424B;
评论(12)
Question question = Question.Role;
int value = (int) question;

将导致 "value == 2"。

评论(9)

这比你想象的要简单--一个枚举已经是一个int。 它只是需要被提醒一下。

int y = (int)Question.Role;
Console.WriteLine(y); // prints 2
评论(2)