有时我们希望变量提取的是一个固定集合中的值,此时就可以使用枚举类型。枚举允许定义一个类型,其中包含提高的限定值集合中的一个值

枚举的定义:枚举使用enum关键字来定义,如:

enum 枚举名

{

     枚举成员1,

     枚举成员2,

     ........

     枚举成员n

}

接着就是声明这个新类型(枚举类型)的变量:

枚举名 变量名;

并赋值:

变量 = 枚举名.枚举成员;

 

枚举使用一个基本类型来存储。枚举类型可以提取的每个值都存储位该基本类型的一个值,在默认情况下,该类型为int。在枚举声明中添加类型,就可以指定其他基本类型:

enum 枚举名:数据类型

{

     枚举成员1,

     枚举成员2,

     ........

     枚举成员n

}

枚举的基本类型可以是byte,sbyte,shotr,ushort,int,uint,long和ulong

在默认情况下,每个值都会根据定义的顺序(从0开始),自动赋给对应的基本类型值。这就意味着枚举成员1的值是0,枚举成员2的值是2.......也可以使用=运算符重写枚举成员的值,如:

enum 枚举名:数据类型

{

     枚举成员1 = 值1,

     枚举成员2,

     枚举成员3 = 枚举成员1 ,

     ......

}

枚举中可以使用一个值作为另一个枚举的值,多个枚举成员指定相同的值。如上例中的“枚举成员3 = 枚举成员1 ”就是用枚举成员1的值来指定枚举成员3的值

没有赋值的枚举成员的值都会自动获得一个初始值,这里使用的值是从比最后一个明确声明的枚举成员的值大1开始序列。如上例中枚举成员2的值就是枚举成员1的值+1。

虽然可以使用一个枚举成员给另外一个枚举成员赋值,但是要注意的是枚举中以迂回方式赋值就可能产生错误,如:

enum typaname:int

{

     value1 = value2,

     value2 = value1

}

 

实例:

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    enum meiju : byte//创建一个枚举变量meiju,并指定其成员的数据类型为byte
    {
        noth = 5,//值为5的枚举的成员
        south,//此成员的值将是在noth的值上加1,即6
        east = south,//此成员的值与south的值相同,即6
        west//此成员的值值是在east的值上加1
    }
    class Program
    {
        static void Main(string[] args)
        {
            int mymj1 = (int)meiju.noth;//声明一个变量mymj1并赋值,其中使用显示转换获取noth成员的值
            int mymj2 = (int)meiju.south;
            int mymj3 = (int)meiju.east;
            int mymj4 = (int)meiju.west;
            Console.WriteLine("枚举的第一个成员的值为:{0} \n枚举的第二个成员的值为:{1} \n枚举的第三个成员的值为:{2} \n枚举的第四个成员的值为:{3}", mymj1, mymj2, mymj3, mymj4);//输出这2个变量
            Console.ReadKey();
        }
    }
}

输出结果:

枚举的第一个成员的值为:5

枚举的第二个成员的值为:6

枚举的第三个成员的值为:6

枚举的第四个成员的值为:7

posted on 2008-08-25 00:47  国雄  阅读(507)  评论(0编辑  收藏  举报