为什么做图书管理网站,尔雅网站开发实战,求购机械加工,舆情分析系统文章目录 12.1 枚举12.1.1 设置底层类型和显式值12.1.2 隐式成员编号 12.2 位标志12.2.1 Flags 特性12.2.2 使用位标志的示例#xff08;*#xff09; 12.3 关于枚举的更多内容 12.1 枚举
枚举是值类型。只有一种类型的成员#xff1a;命名的整数值常量。 每个枚举成员都被… 文章目录 12.1 枚举12.1.1 设置底层类型和显式值12.1.2 隐式成员编号 12.2 位标志12.2.1 Flags 特性12.2.2 使用位标志的示例* 12.3 关于枚举的更多内容 12.1 枚举
枚举是值类型。只有一种类型的成员命名的整数值常量。 每个枚举成员都被赋予一个底层类型的常量值。默认情况下第一个成员赋值为 0后续成员的值依次递增 1。打印时将打印成员名称。 图12.1 枚举声明 12.1.1 设置底层类型和显式值
将冒号和类型名放在枚举名之后以设置底层类型 图12.2 设置底层类型 尽管枚举类型不能有重复的名称但可以有重复的值。 图12.3 等价的枚举声明 12.1.2 隐式成员编号 图12.4 成员赋值的法则与示例 12.2 位标志
枚举可实现位标志的应用 选取足够长度的无符号类型作为枚举底层类型。 确定每个位置代表的含义。 通常使用十六进制法。 图12.5 位标志的枚举声明 C# 7.0 后可以使用二进制表示法。 [Flags]
enum CardDeckSettings : uint
{SingleDeck 0b0001, // 位 0LargePictures 0b0010, // 位 1FancyNumbers 0b0100, // 位 2Animation 0b1000, // 位 3
}图12.6 标志位的定义左和各自代表的值右 使用按位或|运算符设置标志位。 图12.7 使用按位或运算设置标志位 使用按位与运算符或 HasFlag 方法检查是否设置了特定标志位。 HasFlag 方法。 图12.8 使用 HasFlag 方法检查标志位 按位与 。 图12.9 使用按位与运算检查标志位
12.2.1 Flags 特性
Flags 特性不改变计算结果其作用如下
通知编译器等工具该枚举可以组成位标志。允许 ToString 方法提供更多的格式化信息。 图12.10 代码示例 对于上述代码如果没有 [Flags] 特性将会有如下输出 图12.11 无 Flags 特性的输出 加上特性后ToString 方法返回结果将会发生改变 图12.12 有 Flags 特性的输出 12.2.2 使用位标志的示例*
12.3 关于枚举的更多内容
成员不能有修饰符。 枚举成员的可访问性默认和枚举本身相同。 成员是静态的可以随时访问。比较不同的枚举类型会导致编译时错误。C# 6.0 后可以使用 using static 来省略枚举名称。 图12.13 使用 using static 省略枚举名称