zoukankan      html  css  js  c++  java
  • 处理“位域”枚举类型变量的几个例子

    所谓的位域就是说利用一个整形数字二进制下不同的标志位来使一个枚举变量可以记录多个信息。

    例如现在有一个定义好的位域枚举:

    [Flags]
    public enum FlagEnum
    {
        我是第一个=1,
        我是第二个=2,
        我是第三个=4
    }

    单个枚举的赋值和普通枚举是一样的,直接给就好了:

    FlagEnum status = FlagEnum.我是第一个;

    再向其中添加其它枚举,则使用按位或运算:

    status |= FlagEnum.我是第二个 | FlagEnum.我是第三个;

    去除某个枚举值可以使用-=运算:

    status -= FlagEnum.我是第三个 | FlagEnum.我是第一个;

    判断某个枚举是否在其中可以使用按位与运算:

    if ((status & FlagEnum.我是第二个) == FlagEnum.我是第二个)
    {
        Console.WriteLine("我是第二个");
    }
    else
    {
        Console.WriteLine("没有第二个");
    }

    在去除枚举值之前保险起见,最好先判断下枚举变量中是否含有要减去的枚举值,万一没有就惨了。。。

    FlagEnum remove = FlagEnum.我是第三个 | FlagEnum.我是第一个;
    if ((status & remove) == remove)
        status -= remove;

    That's all。。。

  • 相关阅读:
    Hash表的查找-C语言
    二叉排序树-C语言
    线性表的查找算法-C语言
    拓扑排序和关键路径
    图结构的创建与遍历-C语言
    MySQL数据库基本脚本命令
    哈夫曼树编码-C语言
    协程简述
    Python多线程编程-Threading库
    Python多进程编程-multiprocessing库
  • 原文地址:https://www.cnblogs.com/xwgli/p/3543860.html
Copyright © 2011-2022 走看看