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());