协慌网

登录 贡献 社区

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

我有一个名为Questions (复数)的课程。在这个类中有一个名为Question (singular)的枚举,看起来像这样。

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

Questions类中,我有一个get(int foo)函数,它返回该fooQuestions对象。有没有一种简单的方法从枚举中获取整数值,所以我可以做一些像Questions.Get(Question.Role)东西?

答案

刚刚施放枚举,例如

int something = (int) Question.Role;

以上内容适用于您在野外看到的绝大多数枚举,因为枚举的默认基础类型是int

但是,正如cecilphillip 所指出的,枚举可以有不同的底层类型。如果将枚举声明为uintlongulong ,则应将其强制转换为枚举的类型; 例如

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

你应该使用

long something = (long)StarsInMilkyWay.Wolf424B;

由于 Enums 可以是任何整数类型( byteintshort等),因此获取枚举的基础整数值的更健壮的方法是将GetTypeCode方法与Convert类结合使用:

enum Sides {
    Left, Right, Top, Bottom
}
Sides side = Sides.Bottom;

object val = Convert.ChangeType(side, side.GetTypeCode());
Console.WriteLine(val);

无论底层整数类型如何,这都应该有效。

将其声明为具有公共常量的静态类:

public static class Question
{
    public const int Role = 2;
    public const int ProjectFunding = 3;
    public const int TotalEmployee = 4;
    public const int NumberOfServers = 5;
    public const int TopBusinessConcern = 6;
}

然后你可以将它作为Question.Role引用,并且它总是计算为int或你定义的任何东西。