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);
相关推荐
binishuaio6 分钟前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE7 分钟前
【Java SE】StringBuffer
java·开发语言
就是有点傻12 分钟前
WPF中的依赖属性
开发语言·wpf
洋24020 分钟前
C语言常用标准库函数
c语言·开发语言
进击的六角龙22 分钟前
Python中处理Excel的基本概念(如工作簿、工作表等)
开发语言·python·excel
wrx繁星点点23 分钟前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
NoneCoder40 分钟前
Java企业级开发系列(1)
java·开发语言·spring·团队开发·开发
苏三有春40 分钟前
PyQt5实战——UTF-8编码器功能的实现(六)
开发语言·qt
Aniay_ivy1 小时前
深入探索 Java 8 Stream 流:高效操作与应用场景
java·开发语言·python
鸿儒5171 小时前
C++ lambda 匿名函数
开发语言·c++