《CLR via C#》---枚举标志和标志位】的更多相关文章

枚举类型 枚举类型定义了一组符号名称/值配对. 如 private enum Color /* : byte */ { White, // Assigned a value of 0 Red, // Assigned a value of 1 Green, // Assigned a value of 2 Blue, // Assigned a value of 3 Orange, // Assigned a value of 4 } 枚举类型使程序更容易编写.阅读和维护:枚举类型是强类型的:枚…
枚举有个特性叫标志位,使用方法如下 [Flags] enum Foo { a =1, b = 2, c = 4, d = 8 } 每个值需要为2的n次方,保证多个值的组合不会重复. 这样在判断其中一个枚举值c 是否在a,b,c这个范围中就可以简化写法 常规写法如下 var c = Foo.c; if( c == Foo.a || c == Foo.b || c == Foo.c ) { } 因为值为2的n次方,所以可以通过按位相与来得出是否在范围内 var c = Foo.c; if( (c &…
Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Description Flip game is played on a rectangular 4x4 field with two-sided pieces placed on each of its 16 squares. One side of each piece is white and the…
; ; k <= n; k++){ << k)-,u = << n; s < u;){ ;i < n;i++) printf(-i)&); printf("\n"); int b = s & -s; s = (s+b)|(((s^(s+b))>>)/b); } } 就是这么一段小程序...可以按1的个数升序枚举1~2^n所有值 , 其中最后一句位运算更是感觉超酷... 我暂时能看懂的: s起始前k位都为1 b是s的最…
题意:       给你一个数组b[][],在给你一些关系,问是否可以找到一个满足限制的a[], 关系如下(图片): 思路:       说到限制,而且还是两个两个之间的限制,那么很容易想到2-sat但是这个题目 扎一看还不像,b[i][j]不是只 0 1 2,怎么办呢,其实我们可以一位一位枚举,最多 也就32,对于每一位我们都判断下,只有所有的位数都满足了,才算存在a[],下面说下关键,就是怎么建图. a[i] | a[j] == 0 说明两个都是0,则           a  ~a ,b…
题意:判断一个字符串能否划成三段非空回文串. 思路:先用二分+hash在nlogn的时间内求出以每条对称轴为中心的回文串的最大半径r[i](可以用对称的两个下标之和来表示 ),然后利用r[i]求出pre[i]和suf[i],其中pre[i]表示0~i能否形成回文串,suf[i]表示i~n-1能否形成回文串.然后枚举中间的第二段回文串的对称轴,利用半径r[i]得到最左端L和最右端R,问题变成能否找到一个数d,使得pre[L+d] && suf[R-d],-1<=d,L+d<R-d…
枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用,开发人员不需要记住每个硬编码的含义.而且,一旦与符号名称对应…
实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类型不能定义任何方法.除非用扩展方法. 然而正如我之前说到的,也许当你想用扩展方法的时候可以先考虑一下这个地方是否还适合用枚举类型,又或者这个方法是否适合加在这个枚举类型中. 在编译枚举类型时,C#编译器已经将每个符号转换成了类型的一个常量字段. C#默认容纳一个枚举类型的值的基础类型为int,而实际…
枚举部分 enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它. 但是,还可以将枚举嵌套在类或结构中.默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1. 例1: //此枚举的默认值是从0开始 enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; 例2: //此枚举的默认值是从1开始,下标为3的tue值为7,从下标3开始…
1.基础 枚举类型(enumerated types)定义了一组“符号名称/值”配对. 枚举类型是值类型,每个枚举类型都是从System.Enum派生的,而System.Enum又是从System.ValueType派生,而其后又是从System.Object派生而来 枚举类型没有方法属性和事件,但是可以通过扩展方法进行模拟向枚举类型添加方法. 2.例子与IL分析    对于以下的一个枚举类型,通过IL可以知道其内部的结构如下图(1-1)所示: public enum Color{ White,…