C#枚举 及其API C#学习杂记(九)

2023-11-16

C#中有两种基本类型:值类型、引用类型
本文要说的是值类型中的:枚举

1、枚举的意义
我们玩角色扮演游戏的时候,角色一般来说有多种:战士、法师、射手等,我们可以用:0、1、2来分别代表这三种角色类型;

角色类型 类型编号
战士 0
法师 1
射手 2

如果角色类型过多,那在使用的时候就很容易混淆,而枚举可以轻松解决这个问题;
因为枚举可以在类型名称和类型编号之间随时转换
也就是说,存储为枚举类型后,一个枚举值可以既是战士,也是编号0,可以随意转换

2、定义枚举

接下来定义一个枚举:访问标识 + 枚举关键字 + 枚举名

/// <summary>
/// 角色类型枚举
/// </summary>
public enum RoleType
        {
            warrior = 0,  //战士
            Master,       //法师
            shooter       //射手
        }

如上,我在枚举中第一个元素后加上了“ = 0”,那么后面的每一个元素的数字编号会在前一个元素的基础上加一;
也就是说:Master = 1, shooter = 2,这里的数字仅仅是编号,不要理解为Master的值是1,在这里Master与1是等价的。

3、枚举的API 及应用

(1)根据枚举元素名获得其编号,比如:传入Master返回数字 1

            int result = (int)Enum.Parse(typeof(RoleType), "Master");

首先:Enum.Parse() 方法可以将一个字符串转换为对应的枚举对象

里面的第一个参数是一个枚举类型,可用:typeof(RoleType) 得到,第二个参数是一个字符串

那么:**Enum.Parse(typeof(RoleType), “Master”)**得到的结果就是一个对象Object

这个对象里面装有RoleType.Master

这时候只需要(int)强转为整形数据就可以得到Master的编号

(2)根据枚举元素编号获得其名称,比如:传入1 返回字符串 Master

			string result = Enum.GetName(typeof(RoleType), 1);

首先:Enum.GetName() 方法可以返回指定枚举中具有指定值常数的名称

第一个参数是一个枚举类型,可用:typeof(RoleType) 得到,第二个参数是一个常数

Enum.GetName(typeof(RoleType), 1)返回的结果就是一个字符串

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#枚举 及其API C#学习杂记(九) 的相关文章

  • 输出字段值相同的记录

    该主题可能会重复 我在不同的场景下询问这个话题 https stackoverflow com questions 64150691 select records which the values of the field are the
  • 如何唤醒正在休眠的线程?

    我在加载事件中创建了一个线程 如下所示 Thread checkAlert null bool isStop false private void frmMain Load object sender EventArgs e checkAl
  • 如果启用优化,JIT 是否会始终内联此方法?

    我并不期望得到明确的 是 或 否 您可能拥有的任何知识我都会考虑作为答案 private String CalculateCharge Nullable
  • 使用 Thread.Sleep 等待的替代方法

    首先我不是在问同样的问题C Thread Sleep 的替代方案 https stackoverflow com questions 5450353 c sharp alternative to thread sleep or C 中 Th
  • C# 代码自动授予 IIS 对 Windows Server 2008 上文件夹的写入权限?目前抛出异常

    我正在尝试编写一个命令行工具 该工具将为 Windows Server 2008 上的 IIS7 5 提供对 wwwroot 中文件夹的写入权限 以便 Web 应用程序有权写入其基本目录中的特定文件夹 以前 您可以通过在文件夹上分配 IIS
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • c中的奇异值分解简单代码

    我正在寻找 C 语言的奇异值分解 SVD 代码 你能帮我吗 我找到了很多来源 但我无法运行它们 我正在寻找一个为我提供 S V 和 U 3 个矩阵的 SVD 代码版本 您可以使用数字食谱代码svdcmp c 参考 http tumic wz
  • 如何在 C++ 中将向量迭代器转换为 int

    我正在寻找 C 向量中的一个元素 当我找到它时 我想以数字形式 整数 浮点数 获取找到的元素的索引 我天真的尝试是这样的 int x int index vector
  • 委托给子组件的模式

    在我正在工作的产品中 非常基本的场景之一是类的序列化 通常 要序列化的类会在其子组件上调用序列化 例如如果有一个类 s t 班级 A B C D 那么A Pack会调用pack B C D 上的函数 由于有很多这样的类 因此必须一遍又一遍地
  • C++ 中什么被视为语句?

    我的教授通常会问我的班级给定程序中有多少条语句 但我无法确定他将什么定义为语句 似乎 if else 是一个语句 而 for 循环也是一个语句 无论其中是否还有其他假设的语句 对于这个问题是否有任何管理规则或者他对自己的发明的定义 Than
  • 在 JsonConverter 中递归调用 JsonSerializer

    我正在写一个JsonConverter要执行一些我需要在读 写时完成的转换任务 特别是 我采用现有的序列化行为 并在写入 读取时添加一些附加属性 在 的里面JsonConverter 我想利用通过的JsonSerializer实例来执行大部
  • reinterpret_cast 为 void* 是否合法

    我在看https en cppreference com w cpp language reinterpret cast https en cppreference com w cpp language reinterpret cast我注
  • 如何使用 Web Connector 连接 QuickBooks Desktop?

    我正在尝试开发一个简单的 Web 表单应用程序来从 aspx 页面创建 编辑发票 并希望使用 Web 连接器和 ASMX Web 服务同步 QB 桌面和 MS SQL 数据库 2 路同步 QBD gt Web 应用程序和 Web 应用程序
  • 从文件夹中删除文件的单元测试方法

    我们有一个方法 它将文件夹名称和天数作为参数 public void Delete string folder int days var files Directory GetFiles folder foreach var file in
  • 为什么不继承 std::allocator

    我创建了自己的分配器 如下所示 template
  • WCF 服务引用从 WSDL 生成 void 方法

    这是我第一次尝试使用 WCF 所以我猜我做错了什么 我正在尝试访问 WSDL 定义的肥皂服务http confluence atlassian com rpc soap axis confluenceservice v1 wsdl http
  • C# OpenFileDialog 中的 Stackoverflow/CLR 错误

    下面的代码是我的悲伤示例之一 三个 这是一个简单的 OpenFileDialog 调用 会导致程序崩溃 在 XP 上 如果对话框保持打开状态几秒钟 就会发生崩溃 在 Vista 上 如果用户选择 我的电脑 则会发生崩溃 在VS2008中 调
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • 确定 C 字符串是否是 C 中的有效 int

    我需要检查 C 字符串是否是有效整数 我都尝试过 int num atoi str and int res sscanf str d num 但发送字符串 8 9 10 这两行都仅返回 8 而没有指示该字符串的无效性 谁能提出替代方案 看看
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab

随机推荐