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. SQL Server 备份的 8 种方法。

    方法 1. 完整备份 方法 2. 差异备份 方法 3. 部分备份(备份数据库的read_write部分) 方法 4. 文件备份 方法 5. 文件组备份 方法 6. 只复制备份 方法 7. 日志备份 - ...

  2. MYSQL 数据类型的 3 个注意

    注意 1. bit(Length) 这种数据类型中,最大长度只可以是64.就是说 bit(2)      对 bit(64)      对 bit(65)      错 bit(100)    错 注 ...

  3. UIDatePicker控件

    UIDatePicker继承关系如下: UIDatePicker-->UIControl-->UIView-->UIResponder-->NSObject 1.创建UIDat ...

  4. 【Xamarin 挖墙脚系列:Windows 10 一个包罗万象的系统平台】

    build2016 结束后,证实了微软之前的各种传言.当然,都是好消息. Windows10 上基本可以运行主流的任意的操作系统. Windows Linux(在内部版本143216中,支持了bash ...

  5. C++之单元测试

    以前编写程序从没有做过单元测试的工作,所以在后期会花很多时间去纠错,这也就是软件工程中的2:8定律.最近要完成一个项目,要求要对系统中的主类和主函数作出单元测试的保证,才去查找了相关方面的资料,看过后 ...

  6. 【Leetcode】二叉树简单路径最大和问题

    问题一:二叉树任意两个叶子间简单路径最大和 示例: -100 /   \ 2   100 /  \ 10   20 思路:这个问题适用于递归思路. 首先,将问题简单化:假设包含最大和summax的简单 ...

  7. DHTMLX地图开发参考示例摘录

    1.新建地图:http://www.dhtmlx.com/docs/products/dhtmlxLayout/samples/04_components/12_gmaps.html 2.地图框架效果 ...

  8. 杭电oj 1328

    Tips:本题中没有任何难度,直接按普通逻辑进行计算即可. #include<stdio.h> #include<string.h> ]={'A','B','C','D','E ...

  9. ACM学习-POJ-1003-Hangover

    菜鸟学习ACM,纪录自己成长过程中的点滴. 学习的路上,与君共勉. ACM学习-POJ-1003-Hangover Hangover Time Limit: 1000MS   Memory Limit ...

  10. UVA10869 - Brownie Points II(线段树)

    UVA10869 - Brownie Points II(线段树) 题目链接 题目大意:平面上有n个点,Stan和Ollie在玩游戏,游戏规则是:Stan先画一条竖直的线作为y轴,条件是必需要经过这个 ...