CS2L2——枚举

本章代码关键字

1
enum    //枚举

枚举

枚举是一个比较特别的存在,它是一个被命名的整形常量的集合
一般用它来表示 状态 类型 等等

换句话说,枚举可以认为是给一组整数取名字,
然后,使用这组其中一个名字 来与同样是这组的一个名字比较,判断这两个名字背后数值是否是相同

申明枚举 和 申明枚举变量

注意:申明枚举 和 申明枚举变量 是两个概念

  • 申明枚举:相当于是创建一个自定义的枚举类型
  • 申明枚举变量:使用申明的自定义枚举类型,创建一个枚举变量

一个是创建枚举,一个是使用创建出来的枚举作为类型来创建变量

申明枚举语法

枚举名 以E​或者E_​开头 作为我们的命名规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
enum E_自定义枚举名
{
自定义枚举项名字, //0,枚举中包裹的整形常量,第一个默认值是0 下面会依次累加
自定义枚举项名字1, //1
自定义枚举项名字2, //2
}

enum E_自定义枚举名
{
自定义枚举项名字 = 5, // 5 第一个枚举项的默认值 变成5了
自定义枚举项名字1, // 6
自定义枚举项名字2 = 100,
自定义枚举项名字3, //101
自定义枚举项名字4, //102
}

枚举在哪里声明

  1. namespace语句块中(常用
  2. class​ 语句块中 struct​ 语句块中
  3. 注意:枚举不能在函数语句块中申明!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace Lesson1_枚举
{
enum E_MonsterType
{
Normal,//0
Boss,//1
}

enum E_PlayerType
{
Main,
Other,
}

class Program
{
static void Main(string[] args)
{
Console.WriteLine("枚举");
}
}
}

枚举的使用

申明枚举变量与使用

1
//自定义的枚举类型 变量名 = 默认值(自定义的枚举类型,枚举项)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
enum E_monsterType
{
Normal, //默认是0
Boss, //默认是1
}

enum E_PlayerType
{
Main,
Other,
}

internal class Program
{
static void Main(string[] args)
{
//自定义的枚举类型 变量名 = 默认值(自定义的枚举类型,枚举项)
E_PlayerType playerType = E_PlayerType.Other;
//即相当于为数字取了一个名字,使比较更加直观了
if (playerType == E_PlayerType.Main)
{
Console.WriteLine("是主玩家逻辑");
}
else if (playerType == E_PlayerType.Other)
{
Console.WriteLine("是其他玩家逻辑");
}
}
}

枚举是switch是天生一对的

1
2
3
4
5
6
7
8
9
10
11
12
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;
}

枚举的类型转换

枚举转int

直接使用括号强转即可

1
2
3
int i = (int)playerType;
Console.WriteLine(i);
Console.WriteLine(playerType);

int转枚举

直接赋值即可

1
playerType = 0;

枚举转string

1
2
string str = playerType.ToString(); //tostring方法会将枚举项的名字打印出来
Console.WriteLine(str);

把string转换成枚举

第一个参数 :你要转为的是哪个枚举类型
第二个参数 :用于转换的对应的枚举项的字符串,一定要是枚举内有的项
转换完毕后 是一个通用的类型 我们需要用括号强转成我们想要的目标枚举类型

1
2
playerType = (E_PlayerType)Enum.Parse(typeof(E_PlayerType), "Other");
Console.WriteLine(playerType); //这里打印枚举的项名的原因是打印枚举类型的变量会默认打印该变量对应的枚举项名

枚举的作用

在游戏开发中对象很多时候会有很多的状态
比如玩家,会有一个动作状态,我们需要用一个变量或者标识来表示当前玩家处于的是那种状态
综合考虑,可能会用int来表示它的状态
例如 :1、行走,2、待机,3、跑步,4、跳跃…等

枚举可以帮助我们清晰的分清楚状态的含义