当前位置: 首页 > 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…...

如何高效使用AsrTools:快速上手指南与实用功能详解

如何高效使用AsrTools:快速上手指南与实用功能详解 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...

别再只盯着ODD了!从特斯拉FSD和华为ADS的实战,聊聊ODC(设计运行条件)到底怎么落地

从特斯拉FSD到华为ADS:ODC实战落地的工程密码 当特斯拉车主在暴雨天启动FSD时,系统会先检查挡风玻璃上的雨滴传感器数据;而华为ADS用户试图在未系安全带状态下激活系统,仪表盘会立即弹出红色警告——这些看似简单的交互背后&…...

OpenCV4编译后pkg-config失效?教你如何正确生成opencv4.pc文件(附完整CMake参数)

OpenCV4编译实战:从源码构建到pkg-config配置全解析 在Linux环境下从源码编译OpenCV4是许多计算机视觉开发者的必经之路,但不少人在成功编译后却发现pkg-config --modversion opencv命令报错"找不到opencv包"。这并非你的操作失误,…...

终极指南:如何使用LeetDown轻松降级A6/A7苹果设备系统

终极指南:如何使用LeetDown轻松降级A6/A7苹果设备系统 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown LeetDown是一款专为macOS设计的图形化降级工具,能够…...

基于springboot的中医院问诊知识科普系统的设计与实现-vue

目录系统架构设计前端技术选型模块划分关键技术实现开发阶段规划部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构,前端使用Vue.js框架,后端基于SpringBoot构建R…...

【模型手术室】第七篇:模型量化 —— 从 FP16 到 4-bit 的极限压缩与性能翻倍

专栏进度:07 / 10 (微调实战专题) 大模型默认使用 FP16(16 位浮点数) 存储权重,这意味着每个参数占 2 字节。一个 7B 模型光权重就占 14GB 显存。量化的本质是把这些高精度的数字映射到更小的整数空间(如 INT4&#xf…...

微信小程序人脸核身接入全攻略:从资质准备到代码实现(附避坑指南)

微信小程序人脸核身接入实战:合规指南与代码精要 在金融、政务等高安全要求的场景中,确保用户身份真实性已成为刚需。微信小程序提供的人脸核身能力,将活体检测、OCR识别与权威数据比对融为一体,为开发者提供了合规且高效的身份验…...

Phi-4-Reasoning-Vision应用场景:法律文书配图证据链推理系统

Phi-4-Reasoning-Vision应用场景:法律文书配图证据链推理系统 1. 法律文书配图证据链推理系统概述 在法律实务中,证据链的构建往往需要处理大量图文混合材料。传统人工分析方式存在效率低下、主观性强、容易遗漏细节等问题。基于Phi-4-Reasoning-Visio…...

MOSSE算法在无人机视频跟踪中的应用:一个被低估的轻量级选择?

MOSSE算法:无人机视觉跟踪中未被充分利用的高效解决方案 当你在树莓派或Jetson Nano这样的边缘设备上部署无人机视觉系统时,是否经常面临这样的困境:既需要实时性能,又受限于计算资源和功耗?在众多目标跟踪算法中&…...

PySceneDetect终极指南:5分钟掌握智能视频场景检测与分割

PySceneDetect终极指南:5分钟掌握智能视频场景检测与分割 【免费下载链接】PySceneDetect :movie_camera: Python and OpenCV-based scene cut/transition detection program & library. 项目地址: https://gitcode.com/gh_mirrors/py/PySceneDetect PyS…...