枚举类型及Enum方法.doc_第1页
枚举类型及Enum方法.doc_第2页
枚举类型及Enum方法.doc_第3页
枚举类型及Enum方法.doc_第4页
全文预览已结束

下载本文档

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

文档简介

枚举类型及Enum方法实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期只有七天,一年只有十二个月。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,程序设计语言提供了一种枚举类型(也称为枚举)。枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,使用枚举类型定义一个星期七天,定义一年十二个月:enum Days Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday enum Months : byte Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 1 枚举的声明,其形式为:访问修饰符 enum 枚举名: 基础类型 枚举成员(标识符) 说明:任意枚举类型都有基础类型,该基础类型可以是除 char 以外的任何整型,如:byte、sbyte、short、ushort、int、uint、long 、 ulong。基础类型必须能够表示该枚举中定义的所有枚举成员。枚举声明时可以对基础类型进行显式地声明。而没有显式声明时基础类型默认是 int。基础类型指定为每个枚举数成员分配的内存大小。 2 枚举注意事项:1) 枚举成员不能是数值常量、字符常量、字符串常量,使用时不能加单、双引号。例如,以下的定义是错误的: enum Days Sun, Mon, Tues, Wed, Thu, Fri, Sat enum Days “Sun”, “Mon”, “Tues”, “Wed”, “Thu”, “Fri”, “Sat” 2) 每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类 型。枚举类型属于顺序类型。根据定义类型时各枚举成员的排列顺序确定它们的序列,如在默认基础类型即int的情况下序列号从0开始,后面每个枚举成员的值依次递增 1。当然可以显式赋值。例如:enum Days Sunday=2, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 3) 枚举成员是常量,不是变量。尽管是标识符也不能在程序中当做变量用赋值语句对它赋值。例如以下在程序中对枚举成员赋值会提示错误。public class EnumTestenum Days Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday static void Main() Sunday = 5; Sunday = Monday; Console.WriteLine(Sunday = 0, Sunday); 4) 从枚举成员到整型的转换需要用显式类型转换来完成。 例如对于下面的语句将枚举类型 Days类型的枚举成员通过使用强制转换来转换枚举成员为整型。public class EnumTest enum Days Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday static void Main() int x = (int)Days. Sunday; int y = (int)Days. Monday; Console.WriteLine(Sunday = 0, x); Console.WriteLine(Monday = 0, y); 5) 同一个枚举类型中任意两个枚举成员不能具有相同的名称。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。6) 同一个枚举成员不能出现在两个或两个以上的枚举类型定义中。 7) 设有变量a,b,c被说明为上述的Days,可采用下述任一种方式:enum Days Sunday=-1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ;enum Days a,b,c;enum Days Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday a,b,c;enum Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday a,b,c;3 枚举类经常用在switch-case结构中,其常用的(Enum)方法主要有以下几个:1) Enum.Parse 方法 (Type, String):该方法用于将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。语法为public static Object Parse(Type enumType,string value),其参数enumType是枚举类型,value是要转换的值或名称的字符串,返回值是enumType 类型的对象。value 参数中包含枚举成员基础值字符串表示形式、已命名的常数或由逗号分隔的已命名常数列表。例如:using System;enum Days Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday public class Example public static void Main() /Days day = (Days)Enum.Parse(typeof(Days), 0); Days day = (Days)Enum.Parse(typeof(Days), Sunday); switch (day) case Days.Sunday: Console.WriteLine(Today is Sunday); break; case Days.Monday : Console.WriteLine(Today is Monday); break; case . Console.Read(); 2) Enum.Parse 方法 (Type, String, Boolean)该方法用于将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。一个参数指定该操作是否区分大小写。其中参数Boolean取true时忽略大小写,为false时考虑大小写。如上例:Days day = (Days)Enum.Parse(typeof(Days), sunday,true);此时尽管sunday不是枚举类Days中的枚举常数成员,但是仍能得到返回值。3) Enum.ToString 方法 该方法用于将实例的值转换为其等效的字符串表示形式。例如:using System;enum Days Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday public class Example public static void Main() Enum day = Days.Sunday ; Console.WriteLine(The value is 0, day.ToString();Console.WriteLine(The value is 0, (Days)1).ToString(); Console.Read(); 4) Enum.IsDefined 方法 (Type, String)该方法用于指定枚举中是否存在具有指定值的常数的判定。其参数enumType是枚举类型,value 参数可以是:enumType 类型的任何成员;一个变量,其值是 enumType 类型的一个枚举成员;表示枚举成员名称的字符串或者enumType 的基础类型的一个值。如果枚举类型中某个常数具有等于value 的值,返回值为 true,否则为 false。例如:using System;enum Days Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday public class Example public static void Main() int x = (int)Days.Sunday; Console.WriteLine( 0, Enum.IsDefined(typeof(Days), Days .Sunday ); Console.WriteLine( 0, Enum.IsDefined(typeof(Days), x); Console.WriteLine( 0, Enum.IsDefined(typeof(Days), Sunday); Console.WriteLine( 0, Enum.IsDefined(typeof(Days), 1); Console.Read(); 5) Enum.GetName 方法 该方法用于在指定枚举中检索是否具有指定值的常数的名称。其参数enumType是枚举类型,value 参数是特定枚举常数的值(根据其基础类型)。返回一个值为value 的枚举常数的名称字符串;如果没有找到这样的常数,则返回null。如果多个枚举成员具有相同的基础值,则 GetName 方法可保证它将返回其中一个枚举成员的名称。 但是,它并不保证它将始终返回相同枚举成员的名称。 因此,如果多个枚举成员具有相同的值,应用程序代码决不应依赖于返回特定成员名称的方法。注意其传入的参数值必须是枚举的枚举基或基础类型。6) Enum.GetNames 方法 该方法用于获取一个指定枚举中常数名称的数组。返回值数组的元素按枚举常量的值排序。 如果存在具有相同值的枚举常量,则不指定其相应名称的顺序。 例如:using System;enum Days Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday public class Example public static void Main() foreach (string s in Enum.GetNames(typeof(Days) Console.WriteLine(s); Console.Read(); 说明:以上均是Enum类型经常用到的方法,其中Enum.Parse方法最是经常用到。4 枚举类型在VS2010中的一些现象1) VS2010中同一个枚举类型中如果有相同的枚举成员不报错,如:enum Days Sunday, Sunday, Tuesday, Wednesday, Thursday, Friday, Saturday 但是在调用枚举成员是提示错误。2) VS2010中对于枚举成员的常数值在该枚举的基础类型的范围之外时不报错。如:enum Days:uint Sunday=-1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday 但是在调试时提示错误。3) VS2010中对于同一个枚举成员同时出现在两个或两个以上的枚举类型定义中

温馨提示

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

评论

0/150

提交评论