前言
我们其实在前面已经了解过枚举到底有什么作用,但是那毕竟是概念性的语言,理解起来很抽象,今天我们会具体来讲一讲枚举,并谈一谈它的应用。
希望你能从今天的C#基础中有所收获。
基本概念
1.枚举:是一个比较特别的存在,是被明明的整形常量集合
2.申明枚举:创建一个自定义的枚举类型
注意,这只是创建一个枚举类型,并没有实实在在创建一个枚举,这个概念在后续学习中也会反复出现。大家一定要辨别申明类型,和申明变量是两个完全不同的概念。
3.申明枚举变量:用一个定义的枚举类型去申明一个此枚举类型的变量。
4.申明枚举的语法
cs
enum E_自定义枚举名//枚举名以E或E_开头,有些公司要求不同
{
自定义枚举项名字1,
自定义枚举项名字2,
//枚举包裹的整型变量,第一个为0(默认),向下累加(只要后续值不声明,默认累加)
}
看到这个语法,你可能还是有点不清楚枚举到底怎么用,那么我们切切实实进一个例子来看。
5.枚举的使用
以下是一个使用C#编写的代码示例,用来展示如何使用枚举来模拟状态变化:
csharp
using System;
public enum GameState
{
Menu,
Playing,
Paused,
GameOver
}
class Program
{
static void Main(string[] args)
{
GameState currentState = GameState.Menu;
while (true)
{
switch (currentState)
{
case GameState.Menu:
Console.WriteLine("Welcome to the game! Press any key to start.");
Console.ReadKey();
currentState = GameState.Playing;
break;
case GameState.Playing:
Console.WriteLine("Playing the game.");
// 游戏逻辑代码
Console.WriteLine("Press P to pause or Q to quit.");
ConsoleKeyInfo input = Console.ReadKey();
if (input.Key == ConsoleKey.P)
{
currentState = GameState.Paused;
}
else if (input.Key == ConsoleKey.Q)
{
currentState = GameState.GameOver;
}
break;
case GameState.Paused:
Console.WriteLine("Game paused. Press R to resume.");
ConsoleKeyInfo resumeInput = Console.ReadKey();
if (resumeInput.Key == ConsoleKey.R)
{
currentState = GameState.Playing;
}
break;
case GameState.GameOver:
Console.WriteLine("Game over. Press any key to restart.");
Console.ReadKey();
currentState = GameState.Menu;
break;
}
}
}
}
这个代码示例演示了一个简单的游戏状态变化过程。开始时,游戏状态为菜单状态。玩家按下任意键后,游戏状态变为Playing。在Playing状态下,玩家可以按下P键暂停游戏,按下Q键结束游戏。当游戏状态变为Paused时,玩家可以按下R键继续游戏。当游戏状态变为GameOver时,玩家可以按下任意键重新开始游戏。
我们的枚举在此的作用更多是为了定义游戏状态,我们可以发现,枚举的根本作用其实就是让代码看上去更易懂,如果我们把游戏状态改为数字,可能还要来回翻阅才能确定这个常量的真实含义,但是如果通过枚举的话,我们代码的阅读性就得到了大大的提升。
tips:枚举和switch天生一对
枚举声明提示
声明位置:
- namespace(命名空间)里
- class(类)语句块中
- struct(结构体)语句块中
tips:枚举不能再函数语句块中声明。
枚举类型转变
1.枚举和int互转
可以通过使用枚举类型的ToInt()
方法和显式类型转换来实现枚举和int类型的互相转换。以下是一个简单的示例:
csharp
using System;
public enum Color
{
Red = 1,
Green = 2,
Blue = 3
}
public class Program
{
public static void Main(string[] args)
{
Color color = Color.Blue;
// 将枚举转换为int
int colorValue = (int)color;
Console.WriteLine(colorValue);
// 将int转换为枚举
int intValue = 2;
Color enumValue = (Color)intValue;
Console.WriteLine(enumValue);
Console.ReadLine();
}
}
在上面的示例中,我们首先声明了一个Color
枚举,其中包含Red
、Green
和Blue
三个选项。然后,我们将Color.Blue
赋值给一个color
变量。接下来,我们使用显式类型转换将枚举类型转换为int类型,并将结果打印出来。然后,我们将一个int值2赋值给一个intValue
变量,并将其转换为枚举类型Color
,并将结果打印出来。
运行上面的代码,输出将是:
cs
3
Green
可以看到,枚举类型Color.Blue
转换为int类型之后的值是3
,而int类型2
转换为枚举类型之后的值是Green
。
2.枚举和string的互转
可以使用ToString的方法来实现枚举到string的转换,而string到枚举的转换大多是使用括号强转的方式,有点忘记的朋友可以回C#入门重新看一下。
枚举的作用
其实通过例子和之前的讲解,我们再一次做一个概括。
在游戏开发中,我们的对象一般都会有很多状态,不仅仅是游戏本身有暂停,游玩,退出这些,角色本身也有待机,行走,攻击等状态,那我们其实在切换状态的时候,就需要枚举来标明。
枚举本身,也可以让我们在开发中更方便阅读,提高代码的可维护性,不至于过段时间看代码,就不知道这是谁写的了。
总结
其实学到这里,想必你已经掌握了枚举的基本用法和作用,我相信你在以后的开发中也会体会到枚举的好处。
还是那句话,学习路上,戒骄戒躁,脚踏实地。
请期待我下一篇博客,感谢你的观看。