C# 枚举高阶

文章目录

  • 0. 示例枚举
  • 1.常用静态方法
    • 1.1 GetName 根据枚举值获得枚举名
    • 1.2 GetNames 返回指定枚举的所有枚举名
    • 1.3 Parse 根据枚举名转化为枚举成员
  • 2 位枚举
    • 2.1 声明
    • 2.2 Flags 特性
    • 2.3 常用操作
      • 2.3.1 组合枚举值
      • 2.3.2 从枚举变量中去除某个或某些枚举项:
      • 2.3.3 判断枚举变量是否包含某个或某些枚举项:
      • 2.3.4 判断枚举变量是否等于某个或某些枚举项:

0. 示例枚举

[Flags]
enum Color
{Red = 1,White = 2,Blue = 4,Black = 8,Green = 16,Yellow = 32,Pink = 64,
}

1.常用静态方法

1.1 GetName 根据枚举值获得枚举名

public static string? GetName (Type enumType, object value);

示例:

string str = Enum.GetName(typeof(Color), 1);	// Red

1.2 GetNames 返回指定枚举的所有枚举名

public static string[] GetNames (Type enumType);

示例:

foreach (var item in Enum.GetNames(typeof(Color)))
{Console.WriteLine(item);
}/*
Red
White
Blue
Black
Green
Yellow
Pink
*/

1.3 Parse 根据枚举名转化为枚举成员

// ignoreCase 是否区分大小写,默认true
public static object Parse (Type enumType, string value, bool ignoreCase);

示例:

Color color = (Color)Enum.Parse(typeof(Color), "Red");
Console.WriteLine(color);   // Red

2 位枚举

2.1 声明

除了使用示例枚举方式声明枚举也可以使用以下方式:

enum Color
{Red = 1,            //0x1White = 1 << 1,     //0x2Blue = 1 << 2,      //0x4Black = 1 << 3,     //0x8Green = 1 << 4,     //0x10Yellow = 1 << 5,    //0x20Pink = 1 << 6       //0x40
}

2.2 Flags 特性

具有Flags特性的枚举组合在调用实例方法ToString()时,会得到对应的枚举值组合,而非对应的枚举数:

//对于以上枚举,如果不带Flags特性
Console.WriteLine(Color.Red | Color.White);	 // 3
//对于以上枚举,如果带上Flags特性
Console.WriteLine(Color.Red | Color.White); // Red , White

2.3 常用操作

2.3.1 组合枚举值

Color myColor = Color.Red | Color.White | Color.Blue;//”|”表示相并

2.3.2 从枚举变量中去除某个或某些枚举项:

去除 Color.Red 和 Color.White

myColor ^= (Color.Red | Color.White ) // "^" 表示异或,不同为真,相同为假。

myColor &= ~(Color.Red | Color.White ) // "~" 表示取反

2.3.3 判断枚举变量是否包含某个或某些枚举项:

是否包含 Color.Red

(myColor & Color.Red) != 0 // "&" 一真即真

2.3.4 判断枚举变量是否等于某个或某些枚举项:

(myColor | Color.Write) != 0 / /判断是否只有白色。

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

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

相关文章

CyberDAO M级共识交流会·西安站圆满落幕:共筑Web3美好未来

CyberDAO M级共识交流会于2024年5月28日在西安隆重举行&#xff0c;这是一场CyberDAO精英汇聚的盛会&#xff0c;以同心共筑&#xff0c;志在必达为主题口号与DAO精英携手并进&#xff0c;共筑CyberDAO美好宏图。CyberDAO的使命是降低WEB3的门槛&#xff0c;帮助用户轻松抓住行…

【微服务】springboot 构建docker镜像多模式使用详解

目录 一、前言 二、微服务常用的镜像构建方案 3.1 使用Dockerfile 3.2 使用docker plugin插件 3.3 使用docker compose 编排文件 三、环境准备 3.1 服务器 3.2 安装JDK环境 3.2.1 创建目录 3.2.2 下载安装包 3.2.3 配置环境变量 2.2.4 查看java版本 3.3 安装maven …

妙味web前端开发全套视频教程:深度解析与精彩呈现

妙味web前端开发全套视频教程&#xff1a;深度解析与精彩呈现 在数字化浪潮汹涌的时代&#xff0c;Web前端开发技术日新月异&#xff0c;成为互联网行业的热门领域。对于初学者来说&#xff0c;如何系统、全面地掌握Web前端开发技能&#xff0c;是一个充满挑战与困惑的问题。为…

Makefile 中$(origin V)的作用

在 Makefile 中&#xff0c;$(origin V)的作用是获取变量V的来源。origin函数会返回一个字符串&#xff0c;用于表示变量的定义位置或来源。 具体来说&#xff0c;$(origin V)可能返回以下几种常见的值&#xff1a; undefined&#xff1a;表示变量V未被定义。command line&…

JVM学习-垃圾回收(二)

标记-清除(Mark-Sweep)算法 当堆中的有效内存空间被耗尽的时候&#xff0c;就会停止整个程序(stop the world)&#xff0c;然后进行两项工作&#xff0c;第一项则是标记&#xff0c;第二项是清除 标记&#xff1a;Collector从引用根节点开始遍历&#xff0c;标记所有被引用的…

深入理解哈希加密:md5在保护用户数据中的应用

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、md5加密方法简介 二、md5加密方法的实现 示例代码&#xff1a; 三、md5加密方法在实际…

老师如何对付挑事儿的家长?

身为老师&#xff0c;你有没有遇到过这样的家长&#xff1a;孩子在学校里闹点小矛盾&#xff0c;或者作业分数有点争议&#xff0c;他们就气势汹汹地来找你&#xff0c;说你偏心&#xff0c;甚至在其他家长面前说三道四&#xff1f;面对这种爱“挑事”的家长&#xff0c;老师们…

RestTemplet 自定义消息转换器总结

在RestTemplet 请求中&#xff0c;请求发送一个 HTTP 请求时&#xff0c;RestTemplet 会根据请求中的内容类型&#xff08;Content-Type&#xff09;选择合适的 HttpMessageConverter 来处理请求体的数据。同样地&#xff0c;当服务器返回一个 HTTP 响应时&#xff0c;RestTemp…

模型实战(21)之 C++ - tensorRT部署yolov8-det 目标检测

C++ - tensorRT部署yolov8-det 目标检测 python环境下如何直接调用推理模型转换并导出:pt -> onnx ->.engineC++ tensorrt 部署检测模型不写废话了,直接上具体实现过程+all代码 1.Python环境下推理 直接命令行推理,巨简单yolo detect predict model=yolov8n.pt source…

中英文语音合成芯片(TTS芯片)WT3000T8-在ETC上的应用案例

一&#xff1a;开发背景&#xff1a; 随着智能化浪潮的推进&#xff0c;ETC&#xff08;电子不停车收费&#xff09;系统已逐渐成为现代交通的重要组成部分。在这一背景下&#xff0c;唯创知音自主研发的WT3000T8中文转语音合成芯片&#xff08;TTS芯片&#xff09;以其卓越的性…

Pyglet,一款程序员游戏开发多功能Python工具

Pyglet,一款程序员游戏开发多功能Python工具 pyglet 库概述 Pyglet 是一个用于创建图形用户界面 (GUI)、多媒体应用和游戏开发的Python库.它提供了丰富的功能和工具,可以用于创建交互式的图形应用程序和游戏. 安装与用法 首先安装 pyglet:pip install pyglet以下是一个简单…

【开源项目】Excel数据表自动生成工具v1.0版

一、介绍 Excel数据表自动生成工具是Go语言编写的一款小型工具软件&#xff0c;用于将特定的Excel表格内容导出为多种编程语言的代码或可以直接读取的数据内容。 开源Github地址&#xff1a;https://github.com/SkyCreator/goproj 二、版本v1.0功能概览 1.编程语言支持 目前…

Spring Boot发送邮件时如何支持定时功能?

如何使用Spring Boot结合AokSend以实现高效邮件发送&#xff1f; 如何高效地进行sendmail发送邮件并支持定时功能是一个值得探讨的问题。本文将详细介绍如何在Spring Boot中实现定时sendmail发送邮件&#xff0c;并结合AokSend工具实现高效邮件发送。 Spring Boot发送邮件&am…

10W QPS高并发,如何防止重复下单?

小北说在前面 10wqps高并发&#xff0c;如何防止重复提交/支付订单&#xff1f; 10wqps高并发&#xff0c;如何防止重复下单&#xff1f; 10wqps高并发&#xff0c;如何防止重复支付&#xff1f; 10wqps高并发&#xff0c;如何解决重复操作问题&#xff1f; 最近有小伙伴在面试…

JSON.stringify()方法

JSON.stringify()方法 JSON.stringify()方法用于将一个值转为JSON字符串&#xff0c;该字符串符合JSON格式&#xff0c;它也可以被JSON.parse()方法还原。 一、使用JSON.stringify()方法返回的效果&#xff0c;以及需要注意的地方&#xff1a; 注意&#xff1a;原始类型的字符…

奥利奥罚单背后的启示:企业合规与反垄断的边界

在全球化的经济环境中&#xff0c;企业面临着激烈的市场竞争。为了在竞争中脱颖而出&#xff0c;一些企业可能会采取不正当的竞争手段&#xff0c;如垄断、价格歧视等。然而&#xff0c;这些行为往往会触犯反垄断法规&#xff0c;给企业带来严重的法律风险。最近&#xff0c;奥…

Java Class类简介

一、类图&#xff1a; 二、基本介绍&#xff1a; 1. Class也是类&#xff0c;因此也继承了Object类。 2. Class类的对象不是new出来的&#xff0c;是系统创建的。 类加载器ClassLoader有个方法LoadClass()&#xff0c;将某个类对应的Class对象生成在堆中。 通过调试可以发现&am…

Linux静态库、共享动态库介绍、制作及使用

参考学习&#xff1a;Linux下的各种文件 、动态库基本原理和使用方法&#xff0c;-fPIC选项的来龙去脉 、Linux静态库和动态库分析 文章写作参考&#xff1a;Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com) 一.Linux共享库、静态库、动态库详解 使用G…

报错:Cannot invoke “springfox.documentation.service.ParameterType.getIn()“

文章目录 前言一、报错分析二、解决办法修改代码 总结 前言 遇到报错&#xff1a;Cannot invoke "springfox.documentation.service.ParameterType.getIn()" because the return value of "springfox.documentation.service.RequestParameter.getIn()" is …

ResNet 原理剖析以及代码复现

原理 ResNet 解决了什么问题&#xff1f; 一言以蔽之&#xff1a;解决了深度的神经网络难以训练的问题。 具体的说&#xff0c;理论上神经网络的深度越深&#xff0c;其训练效果应该越好&#xff0c;但实际上并非如此&#xff0c;层数越深会导致越差的结果并且容易产生梯度爆炸…