C# 将枚举值增加到下一个值

C# 将枚举值增加到下一个值,c#,enums,bit,C#,Enums,Bit,我有这样一个枚举: [Flags] public enum UserProcessStage : uint { ShopSelection = 1, FillBasket = 2, SpecifyShipmentCredentials = 4, SpecifyPaymentCredentials = 8, OrderComplete = 16 } 假设我有一个值为FillBakset(

我有这样一个枚举:

   [Flags]
    public enum UserProcessStage : uint
    {
        ShopSelection = 1,
        FillBasket = 2,
        SpecifyShipmentCredentials = 4,
        SpecifyPaymentCredentials = 8,
        OrderComplete = 16
    }
假设我有一个值为FillBakset(2)的变量,我想做的是能够将它递增到枚举中定义的下一个值(SpecifyShipmentCredentials,4)

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

如何将枚举值增加到下一个值


谢谢

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

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

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

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

可能的重复项是否有将其设计为
[Flags]
枚举的原因?“增量到下一个状态”对于常规枚举更有意义。可能的重复是否有理由将其设计为
[Flags]
枚举?“增量到下一个状态”对于常规枚举更有意义。