C# —— 枚举

枚举的定义

枚举是一个特殊的存在

// 它是一个被命名的整形常量的集合

// 一般用来表示 状态 类型 等等

声明枚举 和 声明枚举变量

声明枚举 和声明枚举变量 是两个概念

声明枚举: 相当于 创建一个枚举类型

声明枚举变量: 是在声明的自定义枚举类型中创建一个枚举变量

声明枚举的语法

声明枚举变量 enum 关键字 E_ 大写E开头下划线 自定义枚举名

enum E_自定义枚举名

{

自定义枚举项名字1, // 枚举中包裹的 是整形常量 第一个默认值为0 下面会依次累加

自定义枚举项名字2, // 中间使用逗号隔开 最后一位可以加逗号 也可以不加

自定义枚举项名字3

};

跟变量名一样 枚举名不能重复

enum E_自定义枚举名

{

自定义枚举项名字1 = 6,

自定义枚举项名字2,

自定义枚举项名字3 = 100,

自定义枚举项名字4,

自定义枚举项名字5,

}

在哪里声明枚举

1.在namespace命名空间声明枚举

2.class语句块 及 struct 语句块中

3.注意: 枚举类型 不能在函数语句块中 声明!!!

枚举的作用

在一些开发中 对象很多时候 会有多种状态

比如玩家 有动作状态 比如 跑 跳 睡 吃 我们需要一个变量或者标识符 来定义当前玩家状态

综合考虑 可能会使用int类型 来表示状态

0 跑 1 跳 2 睡 3 吃 等等

枚举可以帮助我们 更好的分清楚用户的状态

函数语句块中使用枚举类型

声明枚举变量

定义枚举类型 变量名 = 默认值(自定义的枚举类型.枚举项)

cs 复制代码
E_playerType playerType = E_playerType.Main;

定义枚举类型

cs 复制代码
enum E_MonsterType
{
    Normal, // 0

    Boss,  // 1
}

枚举变量 也是可以使用中文的 但是 禁止使用!!!

cs 复制代码
enum E_playerType
{
    Main, // 0

    Other
}
判断逻辑

switch 和 枚举 天生一对

cs 复制代码
 if (playerType == E_playerType.Main)
             {
                 Console.WriteLine("这是凹凸曼主凸曼");
             }
             else if (playerType == E_playerType.Other)
             {
                 Console.WriteLine("这是凹凸曼其他凸曼");
             }
             else
             {
                 Console.WriteLine("凹凸曼灭亡了 没人了");
             }
cs 复制代码
switch (playerType)
{
    case E_playerType.Main:
        Console.WriteLine("这是凹凸曼主凸曼");
        break;
    case E_playerType.Other:
        Console.WriteLine("这是凹凸曼其他凸曼");
        break;
    default:
        break;
}

枚举类型转换

枚举类型转int类型
cs 复制代码
int i = (int)playerType;
Console.WriteLine(i);
int类型转枚举类型
cs 复制代码
playerType = 0;
Console.WriteLine(playerType);
枚举转字符串
cs 复制代码
string str = playerType.ToString();
Console.WriteLine(str);
字符串转枚举

使用Parse Parse 后 第一个参数 你要转换为 那个类型 第二个参数用于转换的枚举项的字符串

这样他会变成一个通用的类型 然后再使用强转 将它转换为我们想要的目标枚举项

目标枚举项 必须在枚举类型内声明过
cs 复制代码
playerType = (E_playerType)Enum.Parse(typeof(E_playerType), "Other");
Console.WriteLine(playerType);
相关推荐
正在走向自律8 分钟前
Ubuntu系统下Python连接国产KingbaseES数据库实现增删改查
开发语言·数据库·python·ubuntu·kingbasees·ksycopg2
草莓熊Lotso8 分钟前
PyCharm 从入门到高效:安装教程 + 快捷键速查表
开发语言·ide·经验分享·笔记·其他
序属秋秋秋32 分钟前
《C++进阶之STL》【set/map 使用介绍】
开发语言·c++·笔记·leetcode·stl·set·map
澡点睡觉1 小时前
【golang长途旅行第38站】工厂模式
开发语言·后端·golang
Dxy12393102161 小时前
Dockerfile文件常用配置详解
开发语言·docker
MATLAB代码顾问1 小时前
MATLAB可以实现的各种智能算法
开发语言·matlab
c#上位机1 小时前
wpf之TextBlock
c#·wpf
王伯安呢1 小时前
Java开发环境配置入门指南
java·开发语言·jvm·eclipse·环境搭建·新手
·前路漫漫亦灿灿1 小时前
C++-类型转换
开发语言·c++
Kyln.Wu2 小时前
【python实用小脚本-205】[HR揭秘]手工党逐行查Bug的终结者|Python版代码质量“CT机”加速器(建议收藏)
开发语言·python·bug