如果你还是不太懂位运算,请看我的文章:
下面是我在这次项目中学习到的,我眼中的位运算的应用!主要是实现 通知的3个操作:
1. 置顶
2. 设为首页
3. 同时为 “置顶”+ “设为首页”
效果如图:
我们要想简便的进行位运算,我们可以直接进行如下枚举定义,以2的次方定义,应为他们的值很特殊:
数 二进制值
1 1
2 104 1008 100016 1000032 10000064 1000000128 10000000////// 通知类型 /// public enum NoticeType { ////// 普通 /// [Description("普通")] Normal = 1, ////// 置顶 /// [Description("置顶")] Top = 2, ////// 设置首页 /// [Description("设置首页")] Home = 4, }
我们就可以很方便的接受参数来进行位运算的操作,代码如下:
////// 置顶及设置为首页 /// /// ///[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()); }
您的支持是我最大的动力,如果你觉得还可以,请您给个”推荐“!