标志枚举
来源:互联网 发布:流媒体地址探测软件 编辑:程序博客网 时间:2024/04/28 06:27
枚举分为简单枚举和标志枚举。
简单枚举包含的值不用于组合,也不用于按位比较。
标志枚举可以使用OR操作进行组合;
设计标记枚举时要注意两点:1. 指明FlagsAttribute,以指示可以将枚举作为域(即一组标志)处理;
2. 枚举中各标志的值应该是以2的幂来赋值,即:1、2、4、8、16…
标志枚举的作用:举个例子,假如设计一个文件属性,有Hidden、ReadOnly、Encrypt,文件可能具有三个属性的任意组合,如果使用简单枚举,按照排列组合,需要1 + 3 + 3 + 1 = 8个枚举数,如果属性再多的话,将需要更多的枚举数。这时就可以使用标志枚举了。
[Flags]
public enum FileProperty
{
Hidden = 1,
ReadOnly = 2,
Encrypt = 4,
}
设置文件属性时,就可以利用OR自由组合:FileProperty fileP = FileProperty.Hidden | FileProperty.ReadOnly;
从这可以看出为什么标志的值要按2的幂排列,也可以看出标志多于32个时不能使用int类型的原因。相当于使用一个数组,属性的排列顺序与数组下标一一对应,当某个下标处的值为0时,表示对应的属性没有在组合中。
File类的GetAttributes()返回的就是一个枚举值的组合,如何确定组合中包含某个属性,可以使用&(and)操作符
FileAttributes attributes = File.GetAttributes(fileName);
attributes & FileAttributes.Hidden == FileAttributes.Hidden 结果为true时表示存在这个属性。
- 标志枚举
- 标志枚举
- C#枚举类型 标志枚举
- 标志枚举的使用
- unity3d 教程 C#枚举标志
- 枚举类型和位标志
- 枚举类型和位标志
- C#系列--枚举类型与位标志
- 基本类型--枚举类型和位标志
- C#——标志枚举示例学习
- C#系列--枚举类型与位标志
- 【Unity】Unity中的枚举和标志
- C#枚举(标志枚举,进行二进制的转换)
- 一个关于复合型枚举标志位的功能类
- 标志
- C#基础系列(4)-- 第一部分 基础数据类型与操作 -- 枚举类型与位标志(4)
- 雅典奥运会标志
- 标志寄存器
- 求n的阶乘,使用数组存储结果
- Python 技术博客
- poj1789 prim算法
- 既然注册,就是打算在这里安家了~
- arpa的英文翻译
- 标志枚举
- expect的基本用法(存下来慢慢看)
- 设计模式学习之二观察者模式(Observer)——参与气象观测站的设计
- C++ Primer学习笔记——$19 多重继承与虚继承(转自:http://blogold.chinaunix.net/u/18517/showart_252162.html)
- ASP操作Excel技术总结
- HashMap——ConcurrentHashMap
- eclipse装svn时出现的问题及解决
- 2529: Chorus (lis双向)
- 输入一个整数n, 计算1到n的和并以16进制输出