武汉龙图教育:在C#如何应用枚举

上传人:平*** 文档编号:14747190 上传时间:2017-11-01 格式:DOCX 页数:14 大小:125.10KB
返回 下载 相关 举报
武汉龙图教育:在C#如何应用枚举_第1页
第1页 / 共14页
武汉龙图教育:在C#如何应用枚举_第2页
第2页 / 共14页
武汉龙图教育:在C#如何应用枚举_第3页
第3页 / 共14页
武汉龙图教育:在C#如何应用枚举_第4页
第4页 / 共14页
武汉龙图教育:在C#如何应用枚举_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《武汉龙图教育:在C#如何应用枚举》由会员分享,可在线阅读,更多相关《武汉龙图教育:在C#如何应用枚举(14页珍藏版)》请在金锄头文库上搜索。

1、武汉龙图教育:在 C#如何应用枚举一、在学习枚举之前,首先来听听枚举的优点。1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。3、枚举使代码更易输入。二、枚举说明1、简单枚举 枚举使用 enum 关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用 public 和 internal。 枚举是值类型,隐式继承自 System.Enum,不能手动修改。System.Enum 本身是引用类型,继承自 System.ValueType。 枚举都是隐式密封的,不允许

2、作为基类派生子类。 枚举类型的枚举成员均为静态,且默认为 Int32 类型。 每个枚举成员均具有相关联的常数值。此值的类型就是枚举的底层数据类型。每个枚举成员的常数值必须在该枚举的底层数据类型的范围之内。如果没有明确指定底层数据类型则默认的数据类型是 int 类型。 枚举成员不能相同,但枚举的值可以相同。 枚举最后一个成员的逗号和大括号后面的分号可以省略 C#提供类一个类来方便操作枚举,下面给出这个类的常用方法:方法 名称CompareTo将此实例与指定对象进行比较并返回一个对二者的相对值的指示Equals 指示此实例是否等于指定的对象Format根据指定格式将指定枚举类型的指定值转换为其等效

3、的字符串表示形式GetName 在指定枚举中检索具有指定值的常数的名称GetNames 检索指定枚举中常数名称的数组GetTypeCode 返回此实例的基础 TypeCodeGetUnderlyingType 返回指定枚举的基础类型GetValues 索指定枚举中常数值的数组HasFlag 确定当前实例中是否设置了一个或多个位域IsDefined 返回指定枚举中是否存在具有指定值的常数的指示Parse 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写TryParse将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于

4、指示转换是否成功的返回值要显示指定枚举的底层数据类型很简单,只需在声明枚举的时候加个冒号,后面紧跟要指定的数据类型。enum sex : byte/ 显示指定枚举的底层数据类型 male,female,/此逗号可以省略; /此分号可以省略显式设置枚举的成员常量值,默认是从 0 开始,逐个递增的。但是以下例子却设置成了1,2,3,4,5,6,7,0。而且成员值可以一样的。enum Week Monday = 1,Tuesday = 2,Wednesday = 3,Sunday = 0,Everyday = 1/成员的值可以设置成一样的,但是成员不行Console.WriteLine(int)We

5、ek.Monday);/获取值示例,由枚举值获取枚举名称与由枚举名称获取枚举值class Programstatic void Main(string args)Console.WriteLine(Enum.GetName(typeof(Man),1); /还是 刘备 (由值获取名字 ) string array1 = Enum.GetNames(typeof(Man);Console.WriteLine(array11); /关羽Array array2 = Enum.GetValues(typeof(Man);Console.WriteLine(array2.GetValue(1); /还

6、是关羽Type t = Enum.GetUnderlyingType(typeof(Man);Console.WriteLine(t); /输出 Int32/由值获取内容int i = 1;string Name = Enum.Parse(typeof(Man), i.ToString().ToString(); /此时 Name=刘备Console.WriteLine(Name); /由值获取内容string Name2 = 关羽 ;int j = Convert.ToInt32(Enum.Parse(typeof(Man), Name2); /此时 j=2Console.WriteLine

7、(j);Console.ReadKey();enum Man 刘备 = 1,关羽 = 2,张飞 = 3 2、标志枚举标志枚举要在顶部加System.Flags 特性进行声明。而且枚举支持组合运算。先来看个例子class Programstatic void Main(string args)var man = Week.白 | Week.美; /赋值为 101 计算方法001 或上 100,结果是 101Console.WriteLine(int)man);if (man & Week.白) = Week.白) /101 man /001 白 逐位相与,Console.WriteLine(此人

8、白); /001 如果结果是白,就可以反推出 man 包含 白 elseConsole.WriteLine(此人黑);Console.ReadKey();System.Flagspublic enum Week 白 = 1, /001富 = 2, /010美 = 4, /100这种位运算是非常有用的,在 sql 语句里也支持位运算。也就是说,把一个枚举运算后的结果存入数据库之后,还能够按照你的要求读取出来。比如:将一个白美 存如数据库的值存入数据库,那么存入去的就是整型 5。那么我想读出所有的白数据列表怎么读呢?白,可以是纯白 1,也是是白富 3,可以是白美 5,也可以是白富美 7,你可以用

9、in 来读,但是更好的方法是在 sql 语句中同样使用位运算。select * from Table1 where Tag & 1 = 1/Tag 是列名select * from Table1 where Tag | 1 = Tag三、枚举的使用建议当参数、返回值、变量等类型可以使枚举,尽量使用枚举(要注意考虑分类的稳定性)大多数情况下都可以使用 int 类型枚举,下列情况除外。枚举可能被大量频繁的使用,这时为了节约空间可以使用小于 int 类型的枚举。标志枚举,且标志多于 32 个。下面写一个:枚举绑定 MVC3 下拉列表的示例:控制器代码:namespace MvcStart.Contr

10、ollerspublic class HomeController : Controllerpublic ActionResult GetSexList()Dictionary Sexlist = new Dictionary();string keys = Enum.GetNames(typeof(sex);Array values = Enum.GetValues(typeof(sex);for (int i = 0; i foreach(var item in Model)item.Key生成的 HTML 代码:malefemaleother再来一个例子,获取枚举描述public sta

11、tic class GetDescription/ / 获取描述信息/ / / public static string description(this Enum en)Type type = en.GetType();MemberInfo memInfo = type.GetMember(en.ToString();if (memInfo != null & memInfo.Length 0)object attrs = memInfo0.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);if (attrs != null & attrs.Length 0) return (DescriptionAttribute)attrs0).Description;return en.ToString();public enum SexDescription(男 )man = 1,Description(女 )woman = 2,Description(其他 )other = 3想要学 C#的童鞋可以来龙图教育,龙图教育是一家专业做互联网教育品牌的教育机构,线上线下都有,想要学到更多有关 C#的知识可以直接访问龙图教育官网。联系扣扣:318-961-3107

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号