从C#中的枚举获取int值

这篇博客讨论了如何在C#中从枚举类型获取对应的整数值。作者分享了多种方法,包括直接转换、使用扩展方法、静态类常量等,并提供了示例代码。此外,还提到了枚举的基础类型可能不仅仅是int,需要考虑不同类型转换的可能性。
摘要由CSDN通过智能技术生成

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

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

Questions类中,我有一个get(int foo)函数,该函数返回该fooQuestions对象。 有没有一种简单的方法可以从枚举中获取整数值,因此我可以执行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();
}

因为变量GeselecteerdTalen.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

要么


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值