zoukankan      html  css  js  c++  java
  • “位运算”在实际项目中的应用,保证你能学到东西!

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

    下面是我在这次项目中学习到的,我眼中的位运算的应用!主要是实现 通知的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());
            }

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

  • 相关阅读:
    Oracle 推出 ODAC for Entity Framework 和 LINQ to Entities Beta版
    Entity Framework Feature CTP 5系列文章
    MonoDroid相关资源
    MSDN杂志上的Windows Phone相关文章
    微软学Android Market推出 Web Windows Phone Marketplace
    使用 Visual Studio Agent 2010 进行负载压力测试的安装指南
    MonoMac 1.0正式发布
    Shawn Wildermuth的《Architecting WP7 》系列文章
    使用.NET Mobile API即51Degrees.mobi检测UserAgent
    MongoDB 客户端 MongoVue
  • 原文地址:https://www.cnblogs.com/Kummy/p/2936795.html
Copyright © 2011-2022 走看看