C# 枚举使用整理_C# enum详解

一、枚举的定义

枚举类型 是由基础整型数值类型的一组命名常量定义的值类型

System.Enum 类型是所有枚举类型的抽象基类。 它提供多种方法来获取有关枚举类型及其值的信息。 有关更多信息和示例,请参阅 System.Enum API 参考页。

可在基类约束中使用 System.Enum(称为枚举约束),以指定类型参数为枚举类型。 所有枚举类型也都满足 struct 约束,此约束用于指定类型参数为不可为 null 的值类型

使用枚举的优点:

1.增加代码的可读性,使代码更加清晰;它允许使用描述性的名称表示整数值。

2.标准化业务归类、业务类型;有助于确保给变量指定合法的、期望的值。

使用场景:

数据分类,操作类型,订单状态/流程状态

二、枚举的使用

默认情况下,枚举成员的关联常数值为类型 int;

它们从零开始,并按定义文本顺序递增 1。

可以显式指定任何其他整数数值类型作为枚举类型的基础类型。

还可以显式指定关联的常数值。关键词 enum

enum Season
{Spring,//标识0Summer,//标识1Autumn,//标识2Winter //标识3
}

指定数字

enum ErrorCode : ushort
{None = 0,Unknown = 1,ConnectionLost = 100,OutlierReading = 200
}

三、枚举和数字的转换

数据类型转换:

//将枚举,转换成数字
int num = Season.春天.GetHashCode();
Console.WriteLine(num);//将数字,转换成枚举
Season seson = (Season)System.Enum.ToObject(typeof(Season), 1);

常用操作封装:

        /// <summary>/// 获取指定类型的int值得枚举对象/// </summary>/// <param name="value">值</param>/// <param name="t">类型</param>/// <returns></returns>public static T ToObject<T>(int value){Type t = typeof(T);return (T)System.Enum.ToObject(t, value);}/// <summary>/// 指定枚举的string值,获取枚举对象/// </summary>/// <typeparam name="T"></typeparam>/// <param name="value"></param>/// <returns></returns>public static T Parse<T>(string value){return (T)System.Enum.Parse(typeof(T), value);}/// <summary>/// 获取指定类型的枚举列表/// </summary>/// <typeparam name="T"></typeparam>/// <returns></returns>public static Dictionary<int, string> GetList<T>(){Type t = typeof(T);Dictionary<int, string> dic = new Dictionary<int, string>();foreach (var item in System.Enum.GetValues(t)){dic.Add((int)item, System.Enum.GetName(t, item));}return dic;}// 获取namepublic static string GetName<T>(int id){Type t = typeof(T);return System.Enum.ToObject(t, id).ToString();}public static List<object> GetNameList<T>(){Type t = typeof(T);List<object> res = new List<object>();foreach (var item in System.Enum.GetValues(t)){res.Add(new { id = (int)item, name = System.Enum.GetName(t, item) });}return res;}

更多:

C# 去除字符串中的空格方案整理

C#数组分组_C#数据分组_C# Linq分组使用整理

C#时间使用整理,DateTime 使用整理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析之Matplotlib

文章目录 1. 认识数据可视化和Matplotlib安装2. 类型目录3. 图标名称title4. 处理图形中的中文问题5. 设置坐标轴名称&#xff0c;字体大小&#xff0c;线条粗细6. 绘制多个线条和zorder叠加顺序7. 设置x轴刻度xticks和y轴刻度yticks8. 显示图表show9. 设置图例legend10. 显示线…

vue 项目优化

去除冗余的css 消除框架中未使用的CSS,初步达到按需引入的效果 使用背景&#xff1a;vue2.x, webpack3.x 使用插件&#xff1a;purifycss-webpack 安装&#xff1a; npm i purifycss-webpack purify-css glob-all -D安装后各个插件的版本&#xff1a; “glob-all”: “^3.3.…

从小白到大神之路之学习运维第64天--------Zabbix监控mysql、ftp服务以及自定义配置

第三阶段基础 时 间&#xff1a;2023年7月19日 参加人&#xff1a;全班人员 内 容&#xff1a; Zabbix监控mysql、ftp服务以及自定义 目录 一、Zabbix监控mysql数据库 二、Zabbix监控ftp服务 三、Zabbix自定义监控项 整体zabbix搭建完成&#xff0c;server端huyang1监…

吴恩达机器学习2022-Jupyter-Scikit-Learn教学

1可选实验室: 线性回归使用 Scikit-Learn 有一个开源的、商业上可用的机器学习工具包&#xff0c;叫做 scikit-learn。本工具包包含您将在本课程中使用的许多算法的实现。 1.1目标 在这个实验室里: 利用 scikit-学习使用线性回归梯度下降法来实现 1.2工具 您将利用 sciki…

Navidrome - 开源音乐服务器【打造属于自己的音乐播放器】「端口映射」随时随地想听就听

转载自cpolar极点云文章&#xff1a;Navidrome - 开源音乐服务器【打造属于自己的音乐播放器】「端口映射」随时随地想听就听 1. 前言 不知从何时开始&#xff0c;我们能用的音乐软件越来越少&#xff0c;笔者使用小米手机很久了&#xff0c;自从小米手机的自带音乐播放器变成…

【数据结构】堆的应用——Top-K

目录 前言&#xff1a; 一、Top-K问题描述&#xff1a; 二、不同解决思路实现&#xff1a; ①.排序法&#xff1a; ②.直接建堆法&#xff1a; ③.K堆法 总结&#xff1a; 前言&#xff1a; 上篇文章我们学习了二叉树的顺序存储结构&#xff0c;并且对于实际使用中所常…

RabbitMQ到底为什么要使用它?

导入 一个技术的衍生必然是为了解决现实出现的问题&#xff0c;在讲这个问题之前我们先了解一下传统开发中关于服务调用出现的问题&#xff08;痛点&#xff09;有哪些&#xff1f; 我们为什么要使用MQ&#xff1f; ①、同步——超时 在多服务体系架构中&#xff0c;必然存在…

Kyuubi的介绍优势(官网链接)

官网链接&#xff1a;https://kyuubi.apache.org/ Apache Kyuubi™ 是一个分布式多租户网关&#xff0c;用于在数据仓库和 Lakehouse 上提供无服务器 SQL。 Kyuubi 在各种现代计算框架&#xff08;例如 Apache Spark、 Flink、 Doris、 Hive和Trino等&#xff09;之上构建分布…

全志F1C200S嵌入式驱动开发(GPIO输出)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 和v3s一样,f1c200s本身的外部引脚比较少。所以这个时候,不可避免地,很多引脚的功能就会重叠在一起。这种情况下,我们就要学会取舍了。比如说,如果是学习sd卡的时候,那么spi的…

MS1826 HDMI 四进四出多功能视频处理器

MS1826 是一款多功能视频处理器&#xff0c;包含 4 路独立 HDMI 音视频输入通道、4 路独立 HDMI 音视频输出通道以及四路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立 的字库定制型 OSD&#xff1b;可处理隔行和逐行视频或者图形输入信号&#xff1b;有四…

CSS——基础知识及使用

CSS 是什么 CSS是层叠样式表 (Cascading Style Sheets)的简写.CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离。 基本语法规范 选择器 { 一条/N条声明 } 选择器决定针对谁修改 (找谁)声明决定修改啥. (干啥)声明的…

css3的新特性

动画效果 过渡 transition 鼠标放上去瞬间变大 过渡是变大的过程慢慢变化 第一个参数&#xff1a;对哪些值进行过渡。all为hover中所有&#xff0c;也可以指定属性 第二个参数&#xff1a;让动画过渡多长时间。要添加单位&#xff08;s秒&#xff09; 第三个参数&#xff1…

P5708 【深基2.习2】三角形面积

题目描述 一个三角形的三边长分别是 &#xfffd;a、&#xfffd;b、&#xfffd;c&#xff0c;那么它的面积为 &#xfffd;(&#xfffd;−&#xfffd;)(&#xfffd;−&#xfffd;)(&#xfffd;−&#xfffd;)p(p−a)(p−b)(p−c)​&#xff0c;其中 &#xfffd;12(&a…

D354周赛复盘:特殊元素平方和+数组最大美丽值(滑动窗口)+合法分割最小下标

文章目录 6889.特殊元素平方和思路完整版取模注意&#xff1a;不能对0取余/取模解答错误&#xff1a;本题的数组最后一个下标是nums[nums.size()] 6929.数组的最大美丽值&#xff08;排序滑动窗口&#xff09;思路1&#xff1a;排序滑动窗口注意点 6927. 合法分割的最小下标&am…

golang网络编程学习-TCP

golang网络编程学习-TCP 网络编程主要的内容是&#xff1a; 1.TCP网络编程 2.http服务 3.rpc服务 4.websocket服务 golang网络编程学习-TCP 一、TCP/IP TCP/IP是一种协议簇&#xff0c;它是网络通信的基础&#xff0c;是互联网的核心协议&#xff0c;负责数据在网络中的传输。它…

SpringBoot+actuator和admin-UI实现监控中心

使用SpringBoot很久了&#xff0c;但是很少使用到SpringBoot的查看和监控&#xff0c;将来八成也不会用到&#xff0c;万一有机会用到呢&#xff1f;所以记录一下以前学习SpringBootactuator和adminUI实现监控中心的方式 Springboot的版本2.0.x <parent><groupId>…

Spring学习记录---回顾反射机制

目录 10.回顾反射机制 10.1 分析方法四要素 //不使用反射机制调用这些方法 使用反射机制调用方法 代码&#xff1a; 运行结果&#xff1a; 10.4 假设你知道属性名 测试代码 运行结果 10.回顾反射机制 10.1 分析方法四要素 package com.dong.reflect;public class Som…

【java爬虫】将优惠券数据存入数据库排序查询

本文是在之前两篇文章的基础上进行写作的 (1条消息) 【java爬虫】使用selenium爬取优惠券_haohulala的博客-CSDN博客 (1条消息) 【java爬虫】使用selenium获取某宝联盟淘口令_haohulala的博客-CSDN博客 前两篇文章介绍了如何获取优惠券的基础信息&#xff0c;本文将获取到的…

Make:默认构建目标(终极目标)

相关文章 Make&#xff1a;目标&#xff08;Target&#xff09;构建的详细和依赖项的处理过程&#xff08;个人总结&#xff09; 默认情况下make命令的构建从第一个没有 . 前缀的目标&#xff08;target&#xff09;开始&#xff08;除非有 . 前缀的目标中有一个或更多 / &…

PyTorch 1.13简介

# 1.  PyTorch 1.13 据官方介绍&#xff0c;PyTorch 1.13 中包括了 BetterTransformer 的稳定版&#xff0c;且不再支持 CUDA 10.2 及 11.3&#xff0c;并完成了向 CUDA 11.6 及 11.7 的迁移。此外 Beta 版还增加了对 Apple M1 芯片及 functorch 的支持。 1.1 主要更新 Be…