我有一堂课,叫做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)
?
#1楼
如果要获取存储在变量中的枚举值的整数,则类型为Question
,例如在方法中使用,您可以简单地执行我在此示例中编写的操作:
enum Talen
{
Engels = 1, Italiaans = 2, Portugees = 3, Nederlands = 4, Duits = 5, Dens = 6
}
Talen Geselecteerd;
public void Form1()
{
InitializeComponent()
Geselecteerd = Talen.Nederlands;
}
// You can use the Enum type as a parameter, so any enumeration from any enumerator can be used as parameter
void VeranderenTitel(Enum e)
{
this.Text = Convert.ToInt32(e).ToString();
}
因为变量Geselecteerd
是Talen.Nederlands
这会将窗口标题更改为4。 如果将其更改为Talen.Portugees
并再次调用该方法,则文本将更改为3。
我很难在Internet上找到这个简单的解决方案,但是找不到,所以我进行了测试并找到了答案。 希望这可以帮助。 ;)
#2楼
将其声明为具有公共常量的静态类:
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
或您定义为int
任何值。
#3楼
您可以通过对您定义的枚举类型实现扩展方法来做到这一点:
public static class MyExtensions
{
public static int getNumberValue(this Question questionThis)
{
return (int)questionThis;
}
}
这简化了获取当前枚举值的int值:
Question question = Question.Role;
int value = question.getNumberValue();
要么
int value = Question.Role.getNumberValue();
#4楼
尝试这个 :
int value = YourEnum.ToString("D");
#5楼
我能想到的最简单的解决方案是像这样重载Get(int)
方法:
[modifiers] Questions Get(Question q)
{
return Get((int)q);
}
其中[modifiers]
通常可以与Get(int)
方法相同。 如果您无法编辑Questions
类或出于某种原因而不想这样做,则可以通过编写扩展来重载该方法:
public static class Extensions
{
public static Questions Get(this Questions qs, Question q)
{
return qs.Get((int)q);
}
}
#6楼
例:
public Enum EmpNo
{
Raj = 1,
Rahul,
Priyanka
}
并在后面的代码中获得枚举值:
int setempNo = (int)EmpNo.Raj; //This will give setempNo = 1
要么