我有一个名为Questions
(复数)的课程。在这个类中有一个名为Question
(singular)的枚举,看起来像这样。
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 所指出的,枚举可以有不同的底层类型。如果将枚举声明为uint
, long
或ulong
,则应将其强制转换为枚举的类型; 例如
enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};
你应该使用
long something = (long)StarsInMilkyWay.Wolf424B;
由于 Enums 可以是任何整数类型( byte
, int
, short
等),因此获取枚举的基础整数值的更健壮的方法是将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
或你定义的任何东西。