枚举是一个比较特别的存在,它是一个被命名的整形常量的集合,一般用它来表示状态、类型等。
1.声明枚举和枚举变量
注意:声明枚举和声明枚举变量是两个概念。
声明枚举相当于是创建一个自定义的枚举类型。
而声明枚举变量则相当于声明的自定义枚举类型,创建一个枚举变量。
2.声明枚举的语法
枚举名 以E开头或者以E_开头作为我们的命名规范。
enum E_自定义枚举名
{
自定义枚举项名字,//枚举中包裹的整形常量第一个默认值是0,下面会依次累加
自定义枚举名字1,//1
自定义枚举名字2,//2
}
3.在哪里声明枚举
//在namespace语句块中(常用)
//在class语句块中
//在struct语句块中
注意:枚举不能在函数语句块中声明!
⚡变量名字可以用中文,但是最好不要用!枚举的声明,内容全部为常量。
enum E_MonsterType
{
Normal,//0
Boss,//1
}
enum E_PlayerType
{
Main,
Other,
}
4.枚举的使用(在main函数中使用)
枚举和switch是天生一对,一般配合使用。
//声明枚举变量
自定义枚举类型 变量名=默认值;(自定义的枚举类型.枚举项)
E_PlayerType playerType=E_PlayerType.Main;
if(playerType==E_PlayerType.Main)
{
Console.WriteLine("主玩家逻辑");
}
else if(playerType==E_PlayerType.Other)
{
Console.WriteLine("其它玩家逻辑");
}
E_MonsterType monsterType=E_MonsterType.Boss;
switch(monsterType)
{
case E_MonsterType.Normal:
Console.WriteLine("普通怪物逻辑");
break;
case E_MonsterType.Boss:
Console.WriteLine("Boss逻辑");
break;
default:
break;
}
5.枚举的类型转换
->枚举和int互转
int i=(int)playerType;
Console.WriteLine(i);
//int转枚举
playerType=0;
->枚举和string的相互转化
string str=playerType.ToString();
Console.WriteLine(str);
如果是把string转换为枚举类型,Parse后的第一个参数:你要转化的是哪个枚举类型;第二个参数:用于转化的对应枚举项的字符串。转化完毕后,是一个通用的类型,我们需要用括号强转成我们想要的目标类型。
例如:
//将字符串"Other"转化为枚举类型
playerType=(E_PlayerType)Enum.Parse(typeof(E_PlayerType),"Other");
Console.WriteLine(playerType);
6.枚举的作用
①在游戏开发中的对象会存在多种不同的状态,比如一个玩家有一个动作状态,我们需要通过用一个变量或者标识来表示玩家处于的是哪种状态。
②若使用int来表示它的状态:1-行走 2-待机 3-跑步......
③枚举可以帮助我们清晰地分清楚状态的含义。