【问题标题】:Increment an enumeration value to the next one将枚举值递增到下一个
【发布时间】:2017-05-27 18:33:31
【问题描述】:

我有一个这样的枚举:

   [Flags]
    public enum UserProcessStage : uint
    {
        ShopSelection = 1,
        FillBasket = 2,
        SpecifyShipmentCredentials = 4,
        SpecifyPaymentCredentials = 8,
        OrderComplete = 16
    }

假设我有一个值为 FillBakset (2) 的变量,我想要做的是能够将它递增到枚举中定义的下一个值 (SpecifyShipmentCredentials, 4)。

问题是增加它会导致它的值是 3,因为它是基于一个整数的,我尝试将它乘以 2,但得到了编译错误。

如何将枚举值递增到下一个?

谢谢

【问题讨论】:

标签: c# enums bit


【解决方案1】:

您可以使用此代码。它基本上按基础值对枚举进行排序,然后为您提供第一个大于指定值的枚举。如果没有找到,它会因为DefaultIfEmty()而返回0:

public static UserProcessStage GetNext(UserProcessStage value)
{
    return (from UserProcessStage val in Enum.GetValues(typeof (UserProcessStage)) 
            where val > value 
            orderby val 
            select val).DefaultIfEmpty().First();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2015-04-06
    • 2021-04-29
    • 1970-01-01
    相关资源
    最近更新 更多