当前位置: 首页 > news >正文

C#基础知识-枚举

目录

枚举

1.分类

1.1普通枚举

1)默认情况

2)指定起始值

1.2标志枚举(Flag Enum)

位运算符与标志枚举

1)组合标志

2)检查标志

2.枚举与不同类型之间的转换

1)枚举->整型

2)整型->枚举

3)枚举->字符串

4)字符串->枚举


     本篇文章来分享一下C#的基础知识,主要讲述一下枚举。想要了解数据类型的相关知识的可以查看C#基础知识-.NET,变量,容量单位,数据类型

 

枚举

       一般情况下,可以将枚举理解为用于定义一组命名的整型常量。

1.分类

1.1普通枚举

       普通枚举用于列举某种数据的所有取值,可以增强代码的可读性,限定取值。枚举元素默认为int,准许使用的枚举类型有byte,sbyte,short,ushort,int,unit,long或ulong。每个枚举元素都有值,默认情况下,第一个枚举值为0,后续值依次递增,可以修改值。

1)默认情况

      默认情况下,第一个枚举值为0,后续值依次递增。

public enum DayOfWeek
{Sunday,    // 0Monday,    // 1Tuesday,   // 2Wednesday, // 3Thursday,  // 4Friday,    // 5Saturday   // 6
}

 

2)指定起始值

      可以通过显式指定某个枚举成员的值来改变默认的顺序。

public enum ErrorCode
{None = 0,NotFound = 404,ServerError = 500
}

 

1.2标志枚举(Flag Enum)

       标志枚举是指用[Flag]特性修饰的枚举,表示可以组合的位标志。通过使用位运算,标志枚举允许使用单个枚举值来表示多个状态。要创建标志枚举,通常会将每个枚举成员的值设置为2的n次方,这样可以确保它们在二进制表示中是互斥的。

 

位运算符与标志枚举

1)组合标志

       选择多个枚举值,按位|(两个对应的二进制位中有一个1,结果位为1),注意任意多个枚举值做|运算的结果不能与其他枚举值相同(值以2的n次方递增)

2)检查标志

       判断标志枚举是否包含某个枚举值,按位&(两个对应的二进制位中都为1,结果位为1)

using System;
using UnityEngine;public class Test : MonoBehaviour
{[Flags]public enum PersonStyle{tall = 1,     //00000001rich = 2,     //00000010handsome = 4, //00000100white = 8,    //00001000beautiful = 16//00010000}private void Start(){//选择多个枚举PersonStyle person = PersonStyle.tall | PersonStyle.rich | PersonStyle.handsome;Debug.Log(person);PersonStyle style = PersonStyle.white | PersonStyle.rich | PersonStyle.beautiful;PrintPersonStyle(style);}private static void PrintPersonStyle(PersonStyle style){//判断是否包含if ((style & PersonStyle.tall) == PersonStyle.tall){Debug.Log("高");}if ((style & PersonStyle.rich) == PersonStyle.rich){Debug.Log("富");}if ((style & PersonStyle.handsome) == PersonStyle.handsome){Debug.Log("帅");}if ((style & PersonStyle.white) != 0){Debug.Log("白");}if (style.HasFlag(PersonStyle.beautiful)){Debug.Log("美");}}
}

12c0c49ea0d54bc786e5d1ebe13b9f3b.png

 

总结:

1)普通枚举:用于表示一组相关的常量,默认从0开始递增。

2)标志枚举:用于表示可以组合的位标志,允许使用位运算来组合和检查多个状态。通常使用 [Flags] 特性标记以表明该枚举是一个标志枚举。

 

2.枚举与不同类型之间的转换

1)枚举->整型

PersonStyle tall = PersonStyle.tall;
int intValue = (int)value;

2)整型->枚举

int intValue = 1;
PersonStyle value = (PersonStyle)intValue;

3)枚举->字符串

string stringValue = value.ToString();

4)字符串->枚举

PersonStyle enumValue = (PersonStyle)Enum.Parse(typeof(PersonStyle), "tall");

 

好了,本次的分享到这里就结束啦,希望对你有所帮助~

 

相关文章:

C#基础知识-枚举

目录 枚举 1.分类 1.1普通枚举 1)默认情况 2)指定起始值 1.2标志枚举(Flag Enum) 位运算符与标志枚举 1)组合标志 2)检查标志 2.枚举与不同类型之间的转换 1)枚举->整型 2&#…...

系统架构设计师教程 第2章 2.1-2计算机系统及硬件 笔记

2.1计算机系统概述 ★☆☆☆☆ 计算机系统 (Computer System) 是指用于数据管理的计算机硬件、软件及网络组成的系统。 一般指由硬件子系统和软件子系统组成的系统,简称为计算机。 将连接多个计算机以实现计算机间数据交换能力的网络设备,称为计算机网…...

通过使用Visual Studio将你的程序一键发布到Docker

通过使用Visual Studio将你的程序一键发布到Docker 代码 阿里云容器镜像服务 https://www.aliyun.com/product/acr 添加Docker CE阿里云镜像仓库 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装Docker CE、Doc…...

vue2和vue3动态引入路由,权限控制

后端返回的路由结构(具体路由可以本地模拟) // 此路由自己本地模拟即可 const menus [{"title": "动态路由","meta": "{\"title\":\"动态路由\",\"noCache\":true}","component": "/t…...

Spring Boot:植物健康的智能守护者

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

红黑树 学习笔记

目录 1.红黑树的概念 1.1红黑树的规则 1.2红黑树的效率 2.红黑树的实现 2.1红黑树的大致结构 2.2红黑树的插入 2.2.1红黑树插入的大致过程 2.2.2情况1:变色 2.2.3情况2:单旋+变色 2.2.4情况3:双旋变色 2.3红黑树的查找…...

linux更改系统时间

测试环境和生产环境代码完全一致,但是生产环境代码碰到了问题,报错类似time expired,猜测和系统时间有关系,修改之后确实好了。测试如下: 参考:centos7时间同步教程_centos7 时间同步,如果遇到…...

B站C#刘铁猛笔记

C#——刘铁猛笔记 类、名称空间(简述) 类(class)是构成程序的主体 名称空间(namespace)以树形结构组织类(其他类型) 名称空间:名称空间是用来组织和管理类、接口、结构…...

如何使用信号发生器产生正弦波并用数字示波器进行测量

使用信号发生器产生正弦波并用数字示波器进行测量的步骤如下: 1. 准备工作 所需设备 信号发生器数字示波器探头(通常为10X衰减探头)BNC电缆和适配器(如果需要) 2. 设置信号发生器 连接 使用BNC电缆将信号发生器的…...

XJ04、消费金融|授信基本概念及其流程设计

银行是经营风险的特殊行业,而银行授信则与银行业务和风险天然相伴。它是银行与客户建立业务关系的起点,也是银行风险管理的关键环节和核心要素。若要了解银行业务,就得先了解银行的授信业务;若要理解银行经营,就得先理…...

儿童预防接种预约微信小程序springboot+论文源码调试讲解

2相关技术 2.1微信小程序 小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。尤其拥抱微信生态圈,让微信小程序更加的如虎添翼,发展迅猛。 2.2 MYSQL数据…...

nginx 修改配置

如果你的后端服务在不同的端口上运行,但静态资源访问路径相同,你可以使用 Nginx 的 location 配置来将请求转发到不同的后端服务,同时处理静态文件。这里有几种常见的方式: 方案 1: 基于路径的配置 如果所有服务的静态资源路径相…...

孤岛架构在安全性方面

孤岛架构在安全性方面的考虑主要涉及如何确保每个孤岛的安全性,同时维护整个系统的安全。 关键的安全性考虑: 1. 数据隔离和访问控制 数据隔离:每个孤岛应该有独立的数据存储,以确保数据隔离。这有助于防止数据泄露和未经授权的…...

COSCon'24 志愿者招募令:共创开源新生活!

亲爱的开源爱好者们, 第九届中国开源年会(COSCon24)即将在北京中关村国家自主创新示范区会议中心于2024年11月2日至3日隆重举行。今年的主题是“Open Source, Open Life|开源新生活”,旨在探索开源技术如何在各个领域推…...

vscode使用make编译c的问题

问题1:makefile:2: *** missing separator. Stop vscode的配置问题,看这哥们的文章即可:https://blog.csdn.net/m0_57464986/article/details/134220676 问题2:创建makefile文件 直接创建文件名为“makefile”的文件即可&#x…...

管家婆财贸ERP BB019.操作员制单日期控制

最低适用版本: 财贸系列 20.0 插件简要功能说明: 定制操作员权限功能,根据服务器日期控制系统单据新增和修改更多细节描述见下方详细文档 插件操作视频: 进销存类定制插件--操作员制单日期控制 插件详细功能文档: …...

从 Vue 2 到 Vue 3:全面升级指南

​🌈个人主页:前端青山 🔥系列专栏:Vue篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vuet篇专栏内容:Vue-从 Vue 2 到 Vue 3:全面升级指南 前言 随着前端技术的不断发展,Vue.j…...

Apache paimon表操作实战-5

维表Join Paimon支持Lookup Join语法,它用于从 Paimon 查询的数据来补充维度字段。要求一个表具有处理时间属性,而另一个表由查找源连接器支持。 Paimon 支持 Flink 中具有主键的表和append-only的表查找联接。以下示例说明了此功能。 USE CATALOG fs_catalog; CREATE TABL…...

阿里云用STS上传oss的完整程序执行流程图 和前端需要哪些参数uniapp

H5 微信小程序可用的前端直传阿里云OSS(STS临时凭证前端签名)直接下载插件 下面是原理说明: 明白了,我来详细说明前端上传文件到阿里云OSS需要携带的具体参数: 从服务器获取的 STS 凭证: // 这些参数需要从你的后端服务器获…...

决策树方法根据指定条件筛选方案

代码功能说明 条件类:Condition 类用于定义每个条件的范围,并提供一个方法 is_satisfied 来检查输入值是否满足该条件。 算法选择器类:AlgorithmSelector 类负责应用条件并记录不满足的条件。它提供方法 apply_condition 用于更新可用算法&a…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...