• c# 位与运算符&简单实现复选框功能【实际应用】


    • 定义星期枚举:
     [Flags]
        public enum DateEnum
        {
            /// <summary>
            /// 星期一
            /// </summary>
            Monday = 0x1, //1
            /// <summary>
            /// 星期二
            /// </summary>
            Tuesday = 0x2,//2
            /// <summary>
            /// 星期三
            /// </summary>
            Wednesday = 0x4,//4
            /// <summary>
            /// 星期四
            /// </summary>
            Thursday = 0x8,//8
            /// <summary>
            /// 星期五
            /// </summary>
            Friday = 0x10,//16
            /// <summary>
            /// 星期六
            /// </summary>
            Saturday = 0x20,//32
            /// <summary>
            /// 星期日
            /// </summary>
            Sunday = 0x40 //64
        }
    • 实体类应用:
            /// <summary>
            /// -1不限 1星期一 2星期二 4星期三 8星期四 16星期五 32星期六 64星期日(多选)
            /// </summary>
            [Description("0不限 1星期一 2星期二 4星期三 8星期四 16星期五 32星期六 64星期日(多选)")]
            public DateEnum day { get; set; }
    • 前端如果选中星期一、星期二,则需要传[1,2],后端获取值,方法如下
          /// <summary>
            ///计算前端传过来的数组的组合值
            /// </summary>
            /// <param name="list"></param>
            /// <returns></returns>
            public static int GetSum(this int[] lstNum)
            {
                int result = 0;
                if (lstNum!= null)
                {
                    foreach (int item in lstNum)
                    {
                        if (item == 0)
                        {
                            return 0;
                        }
                        else if (!CheckItem(item))
                        {
                            throw new System.Exception("非法的uint数据");
                        }
                        result |= item;
                    }
                }
                else
                {
    
                }
                return result;
            }
    
         static bool ChecItem(int num)
            {
                return num > 0 && (num & (num - 1)) == 0;
            }
    • 判断值是否有改动:
         if (model.day != (DateEnum)request.work_day.GetVal())
         {    
         ...
      }
    • 数据库中存的是位的几个数之和,如库中存的是14,判断选中的是哪几个时,需要循环所有数,与14进行位与 运算,大于0,则表示存在。
              string v1 = "";
                    Dictionary<int, string> dic = new Dictionary<int, string> { };
                    dic.Add(1, "周一");
                    dic.Add(2, "周二");
                    dic.Add(4, "周三");
                    dic.Add(8, "周四");
                    dic.Add(16, "周五");
                    dic.Add(32, "周六");
                    dic.Add(64, "周日");
    
                  
    
                        foreach (var item in dic)
                        {
                            if ((item.Key & (int)model.work_day) > 0)
                            {
                                v1 += item.Value + "  ";
                            }
                        }
  • 相关阅读:
    Android存储数据方式(转)
    Android实现双进程守护 (转)
    Android DOM、SAX、Pull解析XML(转)
    TCP/IP和Socket的关系(转)
    Socket通信原理和实践
    [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)
    内存堆和栈的区别
    hdu 1754 线段树
    hdu 1166 线段树
    zoj 3686 线段树
  • 原文地址:https://www.cnblogs.com/personblog/p/14973647.html
Copyright © 2020-2023  润新知