枚举值思考与为什么使用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
}

 

posted @ 2022-06-17 09:47  清风神剑  阅读(224)  评论(0编辑  收藏  举报