枚举与位枚举
枚举类型 是用于声明一组命名的常数的基本数据类型(值类型)
枚举的定义
声明enum变量
enum_name 指定枚举的类型名称
enumeration list 是一个用逗号分隔的标识符列表
所有枚举类型都隐式地继承System.Enum类型,System.Enum类型是继承自System.ValueType类型唯一不为值类型的引用类型。
CompareTo 将此实例与指定对象进行比较并返回一个对二者的相对值的指示
Equals 指示此实例是否等于指定的对象
Format 根据指定格式将指定枚举类型的指定值转换为其等效的字符串 表示形式
GetName 在指定枚举中检索具有指定值的常数名称
GetNames 检索指定枚举中常数名称的数组
GetTypeCode 返回实例的基础 TypeCode
GetUnderlyingType 返回指定枚举基础类型
GetValues 索引指定枚举中常数值的数组
HasFlag 确定当前事例中是否设置了一个或多个位域
IsDefined 返回指定枚举中是否存在具有指定值的常数指示
Parse 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象,一个参数指定该操作是否不区分大小写
TryParse 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象用于指示转换是否成功的返回值
C# 标记枚举(Flags)
枚举类型 是用于声明一组命名的常数 的 基本数据类型(值类型。
对比
枚举值是互斥的。而位标记集合是一种由组合出现的元素形成的列表,通常设计为以“位或”运算组合新值;枚举类型则通常表达一种语义相对独立的数值集合。而以枚举类型来实现位标记集合是最为完美的组合,简称为位枚举。
//1,给用户创建,读取,修改和删除的权限
var permission = Permission.Create | Permission.Read | Permission.Update | Permission.Delete;
//2,去掉用户的修改和删除权限
permission = permission & ~Permission.Update;permission = permission & ~Permission.Delete;
//3,给用户加上修改的权限
permission = permission | Permission.Update;
//4,判断用户是否有创建的权限
var isCreate = (permission & Permission.Create) != 0; //或者var isCreate =(permission & Permission.Create)== Permission.Create