加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

枚举类型及其在VS2010编程中的一些疑惑

(2011-07-28 14:17:14)
标签:

csharp程序设计

枚举类型及其在VS2010编程中的一些疑惑

实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期只有七天,一年只有十二个月。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,程序设计语言提供了一种枚举类型(也称为枚举)枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。例如,使用枚举类型定义一个星期七天,定义一年十二个月:

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 以外的任何整型,如:bytesbyteshortushortintuintlong 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 EnumTest

{

enum 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.枚举类型在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中对于同一个枚举成员出现在两个或两个以上的枚举类型定义中时不报错。如:

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

enum days { Sunday, monday, tuesday, wednesday, thursday, friday, saturday }

4)        说明:不同的高级语言其枚举结构大致相同,但在一定程度上用法应该有所不同吧。如有高深见解,请不吝赐教。

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有