从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指出的,枚举可以有不同的基础类型。 如果枚举被声明为uint
, long
或ulong
,则应将其转换为enum的类型; 例如
enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};
你应该使用
long something = (long)StarsInMilkyWay.Wolf424B;
由于枚举可以是任何整型( 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
或者你定义它的任何东西。
上一篇: Get int value from enum in C#
下一篇: What is the preferred syntax for defining enums in JavaScript?