C#位运算 详见:http://wenku.baidu.com/link?url=4KUNkwuVTm8dwhmPLXeyYytmnDOJnmLG1L2C77kP-rY0On33ksQxwchoTlqhHd4j41cRk1_3UK7amfR_fWh0Hh1EroSy0y-CgExegjZJBbS

--------------------------------

C#的Enum中Flags的用法(枚举赋多值和如何进行判断)

2012-04-23 10:26:06|  分类: 程序(NET)|举报|字号 订阅

 
 

Flags关键字允许我们在使用.net枚举变量时,使用多个组合值,多个值的赋值方法是使用关键字“|”,

即WeekDays weekdays=WeekDays.Monday  |  WeekDays.Tuesday;

判断枚举是否具有该值:if( weekdays | WeekDays.Monday!=0)   说明是否包含该值

http://www.cnblogs.com/kingmoon/archive/2011/12/11/2284319.html

介绍

Flags关键字允许我们在使用.net 枚举变量时,使用多个组合值

使用演示

 1     [Flags]
 2     enum WeekDays
 3     { 
 4         //注意: 这里不要将Sunday设置为0x0,至于为什么留给大家思考
 5         Monday = 0x1,
 6         Tuesday = 0x2,
 7         Wednesday = 0x4,
 8         Thursday = 0x8,
 9         Friday = 0x10,
10         Saturday = 0x20,
11         Sunday = 0x40
12     }

只需要在Enum上使用上[Flags]标签即可标记为可组合的枚举.下面是简单的用法:

 1         static void TestEnumFlags()
 2         {
 3             /************Kingmoon Lab 之 enum flags 语法*********************/
 4             /*用'|'将各个枚举值分开即可*/
 5             WeekDays wds = WeekDays.Monday | WeekDays.Sunday | WeekDays.Tuesday;
 6             Console.WriteLine("我这3天要来大姨妈:"+wds);
 7             /* 我们来看看计算过程:
 8              * 或运算:
 9                  0000 0001 --星期一 0x1
10               或 0100 0000 --星期六 0x20
11               或 0000 0010 --星期二 0x2
12              =   0100 0011 = 67
13              *换句话说: 某个位是1就代表了这个位上的值在枚举中存在
14              */
15             Console.WriteLine("这3天组合Int为: "+(int)wds);
16             /*利用上面规则来判断枚举值中是否包含某个枚举值就轻而易举*/
17             if ((wds & WeekDays.Monday) != 0)
18                 Console.WriteLine("星期一是其中一天");
19             if ((wds & WeekDays.Saturday) == 0)
20                 Console.WriteLine("星期六不是其中一天");
21         }

运行结果

  

源代码下载

-------------------------------------------
 

enum flags 枚举Flags标示 位运算符的更多相关文章

  1. 【C#进阶系列】15 枚举类型和位标志

    实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类 ...

  2. [CLR via C#]15. 枚举类型和位标志

    一.枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对. 例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal en ...

  3. <NET CLR via c# 第4版>笔记 第15章 枚举类型和位标志

    15.1 枚举类型 枚举定义的符号是常量值. C#编译器编译时,会用数值替换符号,不再引用定义了符号的枚举类型.可能会出现一些版本问题. Enum.IsDefined(Type enumType, o ...

  4. 重温CLR(十一) 枚举类型、位标志和数组

    枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum ...

  5. javascript运算符——位运算符

    × 目录 [1]二进制 [2]非 [3]与[4]或[5]异或[6]左移[7]右移[8]>>>[9]应用 前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度 ...

  6. swift:高级运算符(位运算符、溢出运算符、优先级和结合性、运算符重载函数)

    swift:高级运算符 http://www.cocoachina.com/ios/20140612/8794.html 除了基本操作符中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和 ...

  7. Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)

    一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...

  8. PHP的按位运算符是什么意思

    按位运算符是什么意思? 按位运算符(Bitwise Operators)是用于对涉及单个位操作的位模式或二进制数字执行位操作的运算符. 按位运算符可以用于: 1.通信堆栈,其中标头中的各个位附加到数据 ...

  9. java的布尔运算符和位运算符

    1.布尔运算符 &&  逻辑与: ||   逻辑或: !=  不等于: 三元操作符:?: :表达式为  condition?expression1:expression2(当条件为真时 ...

随机推荐

  1. UIButton控件

    UIButton继承关系如下: UIButton-->UIControl-->UIView-->UIResponder-->NSObject 由于继承层次过多,下面只重点介绍U ...

  2. 合成孔径雷达(Synthetic Aperture Radar, SAR)

    合成孔径雷达(Synthetic Aperture Radar, SAR)是20世纪最先进的科技发明之一.SAR有机载与卫载系统之分,能提供地表地形.乃至行星等远距离目标区高解析度图像.目前无人飞行载 ...

  3. zookeeper 各节点数据保证是弱一致性

    一致性保证: ZooKeeeper 是一个高性能的,可扩展的服务.不管是读和写操作是被设计成快速,虽然读比写快. 这样做的原因是在读的情况下,Zookeeper 可以提供旧的数据, 反过来又是由于Zo ...

  4. Tar打包、压缩与解压缩到指定目录的方法

    tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩档案的参数: -z : 是 ...

  5. HDU1875 畅通工程再续 (并查集)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. ALLEN-XIE

    ALLEN-XIE ABOUT   Allen Xie是一家坚持理念至上的西装定制店.我们的价值观渗透于我们所做的每一件事中,从而确保始终遵循自己的风格.我们坚持用最高标准要求自己,因此,在制衣过程中 ...

  7. 移动前端之viewport

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或 ...

  8. ARM上的linux如何实现无线网卡的冷插拔和热插拔

    ARM上的linux如何实现无线网卡的冷插拔和热插拔 fulinux 凌云实验室 1. 冷插拔 如果在系统上电之前就将RT2070/RT3070芯片的无线网卡(以下简称wlan)插上,即冷插拔.我们通 ...

  9. Hibernate征途(一)之初识

    相见恨晚 很久以前,大概从开始接触数据库开始,就闪过这样一个想法,怎么看怎么觉得数据库表和vb的类模块很像,不是么?除了vb类模块还有函数外:越往下学觉得二者越像,尤其在三层时学到实体类的概念,我去, ...

  10. C# MySQL数据库的备份 还原 初始化

    // 执行创建数据库操作 this.GetExecute(G_Con, "create database if not exists NEWDB"); this.sqlAddres ...