我有一个这样的枚举:
[Flags]
public enum UserProcessStage : uint
{
ShopSelection = 1,
FillBasket = 2,
SpecifyShipmentCredentials = 4,
SpecifyPaymentCredentials = 8,
OrderComplete = 16
}
假设我有一个值为FillBakset(2)的变量,我想要的是能够将它增加到枚举中定义的下一个值(SpecifyShipmentCredentials,4)。
问题是递增它会导致它的值为3,因为它是基于一个整数,我试过将它乘以2但得到了编译错误。
如何将枚举值增加到下一个?
由于
答案 0 :(得分:2)
您可以使用此代码。它基本上按基础值对枚举进行排序,然后给你第一个大于指定值的枚举。如果没有找到,由于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();
}