C#中的枚举类型(Enum)介绍_第1页
C#中的枚举类型(Enum)介绍_第2页
C#中的枚举类型(Enum)介绍_第3页
C#中的枚举类型(Enum)介绍_第4页
C#中的枚举类型(Enum)介绍_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C#中的枚举类型(Enum)介绍枚举(Enum)定义

enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。现在的有些电商网站根据购物的积分用到的,金牌会员,银牌会员,铜牌会员.

enumMemberLevel

gold,

silver,

copper

}

枚举值获取

一般获取的时候包括获取变量和变量值,默认情况下,第一个枚举数的值为0,后面每个枚举数的值依次递增1。直接使用Enum中的静态方法即可操作.GetValues中获取的是枚举变量的值,类型是枚举名,之后自动输出的是枚举名.

strings=Enum.GetName(typeof(MemberLevel),3);

Console.WriteLine(s);

Console.WriteLine("MemberLevel中的值:");

foreach(intiinEnum.GetValues(typeof(MemberLevel)))

Console.WriteLine(i);

Console.WriteLine("MemberLevel中的值(注意类型):");

foreach(MemberLeveliinEnum.GetValues(typeof(MemberLevel)))

Console.WriteLine(i);

Console.WriteLine("MemberLevel中的变量:");

foreach(stringstrinEnum.GetNames(typeof(MemberLevel)))

Console.WriteLine(str);

System.Console.Read();

曾经很长的一段时间自己一度以为枚举的值只能是int类型,其实每种枚举类型都有基础类型,该类型可以是除char以外的任何整型(重点)。枚举元素的默认基础类型为int.准许使用的枚举类型有byte、sbyte、short、ushort、int、uint、long或ulong。如果枚举值为long,如下所示:

enumMemberLevel:long

gold=2147483648L,

silver=232L,

copper=10L

}

枚举Flags和Description特性值

可以使用枚举类型定义位标志,从而使该枚举类型的实例可以存储枚举数列表中定义的值的任意组合。创建位标志枚举的方法是应用System.FlagsAttribute特性并适当定义一些值,以便可以对这些值执行AND、OR、NOT和XOR按位运算。一般情况下如果零值不表示未设置任何标志,则请不要为标志指定零值.

[Flags]

enumMemberLevel

[Description("二进制表示为1----0001")]

gold=0x1,

[Description("二进制表示为4----0010")]

silver=0x04,

[Description("二进制表示为16----0100")]

copper=0x10

}

程序运行如下所示:

//0001(Gold)and0100(silver)=0101(5).

MemberLeveloptions=MemberLevel.gold|MemberLevel.silver;

Console.WriteLine(options);

Console.WriteLine((int)options);

System.Console.Read();

上面的基本上属于入门的知识,在项目中通常用到的是在枚举变量上面加上Description,需要显示的枚举的特性值,枚举的值一般为int在数据库中占用空间比较小,枚举的变量用于给数据库中的字段赋值,那么如果要显示字段就需要考虑到Descripttion特性,显示中文名称,例如一个用户的的等级在数据中存储的是1,显示的时候显示为金牌用户,当然也可以使用switch,if..else..去判断,如果枚举比较多,自己写的也很不爽.特性这个时候刚发挥作用了,如下所示:

[Description("会员等级")]

enumMemberLevel

[Description("金牌会员")]

gold=1,

[Description("银牌会员")]

silver=2,

[Description("铜牌会员")]

copper=3

}

首先来写一个扩展,静态类,静态方法,this关键字,istop主要是用来获取枚举上面的描述.

publicstaticclassEnumHelper

///summary

///返回枚举项的描述信息。

////summary

///paramname="value"要获取描述信息的枚举项。/param

///returns枚举想的描述信息。/returns

publicstaticstringGetDescription(thisEnumvalue,boolisTop=false)

TypeenumType=value.GetType();

DescriptionAttributeattr=null;

if(isTop)

attr=(DescriptionAttribute)Attribute.GetCustomAttribute(enumType,typeof(DescriptionAttribute));

else

//获取枚举常数名称。

stringname=Enum.GetName(enumType,value);

if(name!=null)

//获取枚举字段。

FieldInfofieldInfo=enumType.GetField(name);

if(fieldInfo!=null)

//获取描述的属性。

attr=Attribute.GetCustomAttribute(fieldInfo,typeof(DescriptionAttribute),false)asDescriptionAttribute;

if(attr!=null!string.IsNullOrEmpty(attr.Description))

returnattr.Description;

else

returnstring.Empty;

}

主程序调用如下所示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论