c# 枚举和位标志】的更多相关文章

针对enum枚举来说,可以定义位标志属性,从而使该枚举类型的实例可以存储枚举列表中定义值的任意组合.可以用 与(&).或(|).异或(^)进行相应的运算.废话不多说,代码最直接. //每一个定义值都是一个位标志 [Flags] enum Days { Sunday=0x01, Monday=0x02, Tuesday=0x04, Wednesday=0x08, Thursday=0x10, Friday=0x20, Saturday=0x40 } //----------------------…
实际上本章就只讲枚举类型,因为位标志本来就可以当做一个特殊的枚举类型. 关于枚举类型 枚举类型是一种消灭魔法数字的好方法,使程序更容易编写,阅读和维护. 枚举类型是值类型,然而有别于其它值类型,枚举类型不能定义任何方法.除非用扩展方法. 然而正如我之前说到的,也许当你想用扩展方法的时候可以先考虑一下这个地方是否还适合用枚举类型,又或者这个方法是否适合加在这个枚举类型中. 在编译枚举类型时,C#编译器已经将每个符号转换成了类型的一个常量字段. C#默认容纳一个枚举类型的值的基础类型为int,而实际…
一.枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对. 例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用,开发人员不需要记 住每个硬编码的含义.而且,一旦与符号…
15.1 枚举类型 枚举定义的符号是常量值. C#编译器编译时,会用数值替换符号,不再引用定义了符号的枚举类型.可能会出现一些版本问题. Enum.IsDefined(Type enumType, object value)方法被经常用于参数校验: public void SetColor(ConsoleColor c) { if (!Enum.IsDefined(typeof(ConsoleColor), c)) { throw new ArgumentOutOfRangeException(…
枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { While, //赋值0 Red, //赋值1 Green, //赋值2 Blue, //赋值3 Orange //赋值4 } 使用枚举类型的好处: 1)枚举类型使程序更容易编写.阅读和维护.有了枚举类型,符号名称可在代码中随便使用,开发人员不需要记住每个硬编码的含义.而且,一旦与符号名称对应…
枚举进行位运算--枚举组合 public enum MyEnum { MyEnum1 = , //0x1 MyEnum2 = << , //0x2 MyEnum3 = << , //0x4 MyEnum4 = << , //0x8 MyEnum5 = << , //0x10 MyEnum6 = << , //0x20 MyEnum7 = << //0x40 } 用位移运算方便的获取多个枚举的组合变量: MyEnum myEnum =…
参考<21天学通C++>第25章节,对STL位标志进行介绍.就是当需要不是像char int long 等整个字节数的数据表示形式,而是使用二进制位表示的时候,通常使用这里讲到的位标志.从C++标准模板库的角度讲,实现了两种形式的位标志:bitset类与vector<bool> 模板来较为方便的实现各种各样的位存储与位操作. 一.使用STL位标志 位是存储设置与标志的高效方法.标准模板库提供了可帮助组织与操作位信息的类. 1. bitset类 std::bitset不是STL容器类…
枚举有个特性叫标志位,使用方法如下 [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 &…
由于枚举的基础类型类型为基本的数值类型,支持位运算,因此可以使用一个值表示多个枚举的组合,在定义枚举时需要指定枚举数为2的幂指数方便进行位运算,即枚举数为1,2,4,8…,或1,1<<1,1<<2…: public enum MyEnum { MyEnum1 = , //0x1 MyEnum2 = << , //0x2 MyEnum3 = << , //0x4 MyEnum4 = << , //0x8 MyEnum5 = << , /…