C#_枚举类型



C#中的枚举是名/值对的数据类型,下面是自定义的军衔等级的枚举

//定义枚举
            enum MilitaryRank
            {
                Commander,
                ArmyCorpCommander,
                MilitaryDivisionLevelCommander,
                RegimentalCommand 

            }


MilitaryRank 枚举定义了4个命名常用,这些常量都对应一些离散值,默认情况下第一个元素值为0,其他元素按n+1递推。我们也可以改变默认的初始值,比如下面的

enum MilitaryRank
            {
                Commander=10, //赋予默认值
                ArmyCorpCommander, //自动取得默认值11
                MilitaryDivisionLevelCommander,//自动取得默认值12
                RegimentalCommand  //自动取得默认值13

            }

当然枚举不是必须要求赋予初始值和值连续

控制存储类型

默认情况下,保存枚举值的是int类型,可以通过形如下的方式来改变枚举存储类型

enum MilitaryRank:byte

这样把MilitaryRank的实际存储设置成了byte类型,可以把枚举当作函数的返回值、方法参数、本地变量等

把枚举当作函数参数

static void Dispatch(MilitaryRank D)
        {
            switch(D)
            {
                case MilitaryRank.Commander:
                    Console.WriteLine("派遣司令");
                    break;
                case MilitaryRank.ArmyCorpCommander:
                    Console.WriteLine("派遣军长");
                    break;
                case MilitaryRank.MilitaryDivisionLevelCommander:
                    Console.WriteLine("派遣师长");
                    break;
                case MilitaryRank.RegimentalCommand:
                    Console.WriteLine("派遣团长");
                    break;
                default: Console.WriteLine("无人派遣");
                    break;
            }
        }

在为枚举类型赋值的时候,必须以枚举名来设置值,并且枚举类型中没有定义的值是非法的

System.Enum类型

所有.Net枚举类型都继承自System.Enum。拥有它的很多有用功能,比如

返回枚举类型值得数据类型

Console.WriteLine("保存枚举类型值得数据类型是:{0}", Enum.GetUnderlyingType(Send.GetType()));


返回当前枚举值得字符串名

Console.WriteLine("当前枚举值得字符串名{0}", Send.ToString());


posted @ 2014-06-19 13:54  漫长当下  阅读(223)  评论(0编辑  收藏  举报