C#的枚举与位枚举怎么定义
这篇文章主要介绍了C#的枚举与位枚举怎么定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#的枚举与位枚举怎么定义文章都会有所收获,下面我们一起来看看吧。
一、枚举的概念
C# 枚举(Enum), 枚举类型是用于声明一组命名的常数的基本数据类型(值类型)
二、枚举的定义
声明 enum 变量:
enum {enumeration list};
其中 enum_name 指定枚举的类型名称,enumeration list 是一个用逗号分隔的标识符列表; 枚举列表中的每个符号代表一个整数值,一个比他前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0。例如:
enum Days {Sun , Mon, tue, Fir, sat };
三、枚举的案例,枚举变量的用法
实例
using System;namespace EnumApplication{ class EnumProgram { enum Days { Sun, Mon, tue, Wed, thu, Fri, sat }; static void Main(string[] args) { int WeekdayStart = (int)Days.Mon; int WeekdayEnd = (int)Days.Fir; Console.WriteLine("Monday:{0}",WeekdayStart); Console.WriteLine("Firday:{0}",WeekdayEnd ); Console.ReadKey(); } }}
四、Enum 类:
所有枚举类型都隐式地继承 System.Enum 类型, System.Enum 类型是继承自 System.ValueType 类型唯一不为值类型的引用类型。
五、Enum 类
方法 | 描述 |
---|---|
CompareTo | 将此实例与指定对象进行比较并返回一个对二者的相对值的指示 |
Equals:指示此实例是否等于指定的对象; | |
Format | 根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式 |
GetName | 在指定枚举中检索具有指定值的常数的名称 |
GetNames | 检索指定枚举中常数名称的数组 |
GetTypeCode | 返回此实例的基础TypeCode |
GetUnderlyingTye | 返回指定枚举的基础类型 |
GetValues | 指定枚举中常数值的数组 |
HasFlag | 确定当前实例中是否设置了一个或多个位域 |
IsDefined | 返回指定枚举中是否存在具有指定值的常数的指示 |
Parse | 将一个或多个枚举常数的名称或数字值得字符串表示转换成等效得枚举对象,一个参数指定该操作是否不区分大小写 |
TryParse | 将一个或多个枚举常数得名称或数字值得字符串表示转换成等效得枚举对象,用于指示转换是否成功得返回值 |
六、标志枚举/位枚举
C# 标记枚举(Flags):枚举类型是用于声明一组命名得常数得基本类型数据(值类型)。
枚举值是互斥得。而位标记集合是一种由组合出现得元素形成得列表,通常设计为以”位或”运算组合新值。
枚举类型则通常表达一种语义相对独立得数值集合。而以枚举类型来实现位标记集合是最完美得组合,简称位枚举。
七、位枚举得定义
/// /// 权限枚举 /// [Flags] public enum permission 注意加了[Flags]特性后有三种写法, { 一种是使用
八、位枚举的实例
//1、给用户创建、读取,修改和删除的权限var parmission = Permission.Create | parmission.Read | parmission.Update | parmission.Delete;//2、去掉用户的修改和删除权限parmission = parmission &~parmission.Update;parmission = parmission &~parmission.Delete;//3、给用户加上修改的权限parmission = parmission | parmission.Update;//4、判断用户是否有创建的权限var isCreate = (parmission & parmission.Create)!=0;//或者var isCreate = (parmission & parmission.Create)==parmission.Create; 这时parmission枚举的值将变成0+1+4=5,它的ToSting()将变成“parmission.Create, parmission.Read”,parmission.Update; 这里我们可以解释为什么第五个值Delete是8而不能成为5。 也就是说它的值不应该是前几项值的复合值。一个比较简单的方法 就是用2的n次方来依次位每一项赋值,例如:1,2,4,8,16,32,64.......。
关于“C#的枚举与位枚举怎么定义”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“C#的枚举与位枚举怎么定义”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341