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

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

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

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


只需抛出枚举,例如

int something = (int) Question.Role;

以上将适用于你在野外看到的绝大多数枚举,因为枚举的默认底层类型是int

但是,正如cecilphillip指出的,枚举可以有不同的基础类型。 如果枚举被声明为uintlongulong ,则应将其转换为enum的类型; 例如

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

你应该使用

long something = (long)StarsInMilkyWay.Wolf424B;

由于枚举可以是任何整型( 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或者你定义它的任何东西。

链接地址: http://www.djcxy.com/p/2669.html

上一篇: Get int value from enum in C#

下一篇: What is the preferred syntax for defining enums in JavaScript?