15.1 枚举类型 枚举定义的符号是常量值. C#编译器编译时,会用数值替换符号,不再引用定义了符号的枚举类型.可能会出现一些版本问题. Enum.IsDefined(Type enumType, object value)方法被经常用于参数校验: public void SetColor(ConsoleColor c) { if (!Enum.IsDefined(typeof(ConsoleColor), c)) { throw new ArgumentOutOfRangeException(…
参考<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 &…