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. Python: xml转json

    1,引言 GooSeeker早在9年前就开始了Semantic Web领域的产品化,MS谋数台和DS打数机是其中两个产品.对web内容做结构化转换和语义处理的主要路线是 XML -> RDF - ...

  2. tornado.web.Application类配置及使用

    Application configuration classtornado.web.Application(handlers=None, default_host='', transforms=No ...

  3. iOS正则表达式的使用

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  4. MYSQL 查看可用的字符集的 2 方法

    方法 1. show character set; 方法 2. show collation;

  5. C#中委托和事件

    目 录 将方法作为方法的参数 将方法绑定到委托 更好的封装性 限制类型能力 范例说明 Observer 设计模式简介 实现范例的Observer 设计模式 .NET 框架中的委托与事件 为什么委托定义 ...

  6. Oracle EBS-SQL (PO-12):检查期间请购单的下达记录数.sql

    SELECT DECODE(PRHA.INTERFACE_SOURCE_CODE,'','手工','MRP','自动') 下达方式, PRHA.CREATION_DATE                ...

  7. 【数据结构(ywm版)】异或指针双向链表

    在<数据结构题集>中看到这种链表,实际上就是把一般的双向链表的next和prior两个指针通过异或运算合并为一个指针域来存储,每个结点确实可以减少一个指针的空间,但会带来取指针值时运算的开 ...

  8. 网页前台的iframe控制内部刷新子页

    <body> <!--Header--> <uc1:top runat="server" ID="top" /> <! ...

  9. C#中Linq延迟执行问题

    本文来自:http://msdn.microsoft.com/zh-cn/library/bb399393(v=vs.110).aspx http://www.cnblogs.com/zhanglin ...

  10. poj 3026 (最小生成树)

    题意:起点开始有超过100个人,总共不会超过100个外星人,问把所有的外星人都搜出来花的最小时间.一条路径上的时间跟人数是无关的,只跟路径长度有关. 思路:刚开始人都在起点,当派一定人数去最近的外星人 ...