枚举值思考与为什么使用1,2,4,8,16,32等2的幂方
以前的枚举命名规则
之所以用10开头而不用1,2,3,4,是考虑到业务变更频繁,可以在中间插10个状态,如此扩展性相对较好。
有些业务场景判断逻辑可以用 10<=x<=30这种逻辑来判断,在中间插状态则不需更改代码。为什么使用200而不是0来存草稿/暂存状态,则与个人习惯有关。
以前枚举存数据库是存tinyint,后来才改成int,一般认为,枚举值不要超过255,使用200作暂存几乎是我认为的业务最大值了。作边界使用
/// <summary> /// 提交审核 /// </summary> [Description("审核中")] [Remark("提交审核")] Pending = 10, /// <summary> /// 审核不通过 /// </summary> [Description("审核不通过")] [Remark("审核不通过")] Aborted = 20, /// <summary> /// 审核通过 /// </summary> [Description("审核通过")] [Remark("审核通过")] Completed = 30, /// <summary> /// 作废/禁用 /// </summary> [Description("已作废")] [Remark("作废")] Cancel = 60, /// <summary> /// 暂存 /// </summary> [Description("暂存")] [Remark("保存")] Active = 200
为什么使用1,2,4,8,16,32等2的幂方?
暂时只能想到包含的场景,判断时间
if ((Days.Weekend & Days.Sunday) != 0)//判断是否周末 { Console.WriteLine("1"); } if (((Days)32 & Days.WorkDay) != 0)//判断是否工作日 { Console.WriteLine("1"); } Console.WriteLine(); [Flags] public enum Days { Monday = 1, // 1 Tuesday = 2, // 2 Wednesday = 4, // 4 Thursday = 8, // 8 Friday = 16, // 16 Saturday = 32, // 32 Sunday = 64, // 64 Weekend = Saturday | Sunday, WorkDay = Monday | Tuesday | Wednesday | Thursday | Friday }