“位运算”在实际项目中的应用,保证你能学到东西!

如果你还是不太懂位运算,请看我的文章:那些年我们一起遗忘的位运算!

下面是我在这次项目中学习到的,我眼中的位运算的应用!主要是实现 通知的3个操作:

 1.  置顶

 2.  设为首页

 3.  同时为 “置顶”+ “设为首页”

效果如图:

我们要想简便的进行位运算,我们可以直接进行如下枚举定义,以2的次方定义,应为他们的值很特殊:

数      二进制值

1   1
2     10
4       100
8     1000
16     10000
32     100000
64     1000000
128   10000000

 /// <summary>
    /// 通知类型
    /// </summary>
    public enum NoticeType
    {
        /// <summary>
        /// 普通
        /// </summary>
        [Description("普通")]
        Normal = 1,
        /// <summary>
        /// 置顶
        /// </summary>
        [Description("置顶")]
        Top = 2,
        /// <summary>
        /// 设置首页
        /// </summary>
        [Description("设置首页")]
        Home = 4,
    }

我们就可以很方便的接受参数来进行位运算的操作,代码如下:

        /// <summary>
        /// 置顶及设置为首页
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        [Role]
        public ActionResult Workshop_NoticeSet(int id, int typeFlag)
        {
            bool res = false;
            Workshop_Notice entity = workshopManager.GetWorkshop_Notice(i => i.WorkshopNoticeID == id);
            if (entity != null)
            {
                switch ((NoticeType)typeFlag)
                {
                    case NoticeType.Home:
                        if ((entity.TypeFlag & (int)NoticeType.Home) > 0)
                            entity.TypeFlag = entity.TypeFlag ^ (int)NoticeType.Home; //取消置顶
                        else
                            entity.TypeFlag = entity.TypeFlag | (int)NoticeType.Home; //置顶
                        break;
                    case NoticeType.Top:
                        if ((entity.TypeFlag & (int)NoticeType.Top) > 0)
                            entity.TypeFlag = entity.TypeFlag ^ (int)NoticeType.Top;  //取消设为首页
                        else
                            entity.TypeFlag = entity.TypeFlag | (int)NoticeType.Top; //设为首页
                        break;
                }
                if (workshopManager.EditWorkshop_Notice(i => new Workshop_Notice
                {
                    TypeFlag = entity.TypeFlag,
                    WorkshopNoticeID = entity.WorkshopNoticeID,
                }).IsComplete)
                    res = true;
            }
            return Content(res.ToString());
        }

 您的支持是我最大的动力,如果你觉得还可以,请您给个”推荐“!

原文地址:https://www.cnblogs.com/Kummy/p/2936795.html