将枚举值增加到下一个

时间:2017-05-27 18:33:31

标签: c# enums bit

我有一个这样的枚举:

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

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

您可以使用此代码。它基本上按基础值对枚举进行排序,然后给你第一个大于指定值的枚举。如果没有找到,由于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();
}