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]
枚举?“增量到下一个状态”对于常规枚举更有意义。