zoukankan      html  css  js  c++  java
  • 标志枚举

    标志枚举

    标志枚举要在顶部加[System.Flags]特性进行声明。而且枚举支持组合运算。先来看个例子

       class Program
        {
    
       [System.Flags]
        public enum Week
        { 
            白 = 1,  //001
            富 = 2,  //010
            美 = 4,  //100
        }
            static void Main(string[] args)
            {
                var man = Week.白 | Week.美;  //赋值为101    计算方法001或上100,结果是101
                Console.WriteLine((int)man);
                if ((man & Week.白) == Week.白)       //101 man 
                {                                    //001 白 逐位相与,
                    Console.WriteLine("此人白");      //001 如果结果是白,就可以反推出man包含 白
                }
                else
                {
                    Console.WriteLine("此人黑");
                }
                Console.ReadKey();
            }
        }
    
     

      这种位运算是非常有用的,在sql语句里也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来。比如:

      将一个"白美"存如数据库的值存入数据库,那么存入去的就是整型5。

      那么我想读出所有的"白"数据列表怎么读呢?白,可以是纯白"1",也是是白富3,可以是白美5,也可以是白富美7,你可以用in来读,但是更好的方法是在sql语句中同样使用位运算。

    select * from Table1 where Tag & 1 = 1  //Tag是列名
    
    select * from Table1 where  Tag | 1 = Tag
  • 相关阅读:
    A. Vanya and Table
    B. Chris and Magic Square
    A. Bus to Udayland
    关于cout输出精度问题
    1087 1 10 100 1000
    1080 两个数的平方和
    CODE[VS] 1842 递归第一次
    CODE[VS] 1501 二叉树最大宽度和高度
    少年中国说
    CODE[VS] 1475 m进制转十进制
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/8805239.html
Copyright © 2011-2022 走看看