C# enum Enumeration Type 枚举

  • 定义枚举
  • 使用枚举
  • 访问枚举值
  • 枚举与`switch`语句
  • 枚举特性
  • 枚举与位字段
  • 总结

C#中, enum 是一种特殊的值类型,它允许你为一组相关的常量定义一个名称。枚举提供了一种将一组整数值与更易读的名称关联起来的方法。

定义枚举

你可以使用 enum 关键字来定义枚举类型。枚举类型默认是基于 int 的,但你也可以指定不同的整型基础,如 bytesbyteshortlong 等。

// 默认基于int的枚举
public enum Color
{Red,Green,Blue
}// 基于byte的枚举
public enum Size : byte
{Small,Medium,Large
}

使用枚举

在代码中,你可以像使用常量一样使用枚举成员:

Color myColor = Color.Blue;
Size mySize = Size.Medium;

访问枚举值

你可以通过调用 ToString() 方法或使用 + 运算符来获取枚举成员的名称或值:

Console.WriteLine(myColor.ToString()); // 输出 "Blue"
Console.WriteLine((int)myColor); // 输出 "2"

枚举与switch语句

枚举类型非常适合在 switch 语句中使用:

switch (myColor)
{case Color.Red:Console.WriteLine("The color is red.");break;case Color.Green:Console.WriteLine("The color is green.");break;case Color.Blue:Console.WriteLine("The color is blue.");break;
}

枚举特性

枚举值是常量,编译时常量值就已经确定。
枚举默认从0开始,但你可以指定不同的起始值。
枚举成员的值可以是任何整型,包括负数。

public enum StatusCode
{OK = 0,NotFound = -1,Error = -2
}

枚举与位字段

枚举还可以用于位字段(bit fields),通过使用 [Flags] 特性,可以将枚举成员作为位标志来使用:

[Flags]
public enum Permissions
{None = 0,Read = 1,Write = 2,Execute = 4
}Permissions myPermissions = Permissions.Read | Permissions.Write;

使用 [Flags] 特性的枚举可以很容易地进行位运算,如 ORANDNOT 等。

总结

枚举是C#中非常有用的语言特性,可以提高代码的可读性和可维护性。

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

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

相关文章

C语言的数据结构:树与二叉树(哈夫曼树篇)

前言 上篇讲完了二叉树,二叉树的查找性能要比树好很多,如平衡二叉树保证左右两边节点层级相差不会大于1,其查找的时间复杂度仅为 l o g 2 n log_2n log2​n,在两边层级相同时,其查找速度接近于二分查找。1w条数据&am…

什么是中断?---STM32篇

目录 一,中断的概念 二,中断的意义 三,中断的优先级 四,中断的嵌套 如果一个高优先级的中断发生,它会立即打断当前正在处理的中断(如果其优先级较低),并首先处理这个高优…

uniapp+php开发的全开源多端微商城完整系统源码.

uniappphp开发的全开源多端微商城完整系统源码. 全开源的基础商城销售功能的开源微商城。前端基于 uni-app,一端发布多端通用。 目前已经适配 H5、微信小程序、QQ小程序、Ios App、Android App。 采用该资源包做商城项目,可以节省大量的开发时间。 这…

网页摘要生成算法的一点探索

网页摘要生成算法是一个复杂的过程,涉及多个步骤和不同的技术。以下是一个基于参考文章信息的清晰回答,对网页摘要生成算法进行了分点表示和归纳: 1. 算法概述 网页摘要生成算法的主要目标是自动从网页内容中提取关键信息,并生成简…

【第8章】MyBatis-Plus持久层接口之ActiveRecord

文章目录 前言一、使用步骤1. 继承 Model 类2. 调用 CRUD 方法 二、使用提示总结 前言 ActiveRecord 模式是一种设计模式,它允许实体类直接与数据库进行交互,实体类既是领域模型又是数据访问对象。在 Mybatis-Plus 中,实体类只需继承 Model …

周边美食小程序系统的设计

管理员账户功能包括:系统首页,个人中心,用户管理,美食店铺管理,菜品分类管理,标签管理,菜品信息管理,系统管理 微信端账号功能包括:系统首页,美食店铺&#…

操作系统期末复习(选择题判断题(二))

选择题 1.临界区是。 A.一段共享数据区 B.一个缓冲区 C.一段互斥执行的程序段 D.一个互斥资源 2. 生产者一消费者问题中,当时表示缓冲池满。 A.inmod n out B(in+1)mod n out C.(in-1)mod n o…

基于SSM+Jsp的疫情居家办公OA系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

20-OWASP top10--XXS跨站脚本攻击

目录 什么是xxs? XSS漏洞出现的原因 XSS分类 反射型XSS 储存型XSS DOM型 XSS XSS漏洞复现 XSS的危害或能做什么? 劫持用户cookie 钓鱼登录 XSS获取键盘记录 同源策略 (1)什么是跨域 (2)同源策略…

面试官:MySQL并发事务是如何处理

1. 并发事务的挑战 开发人员在并发编程中经常面临安全性和一致性问题。通常采用同步机制和锁机制来解决这些问题,例如Java中的synchronized关键字和Lock接口。 2. MySQL并发事务情况 数据的读写操作基于数据页。并发事务可能存在的类型: 读/读读/写写…

Python 潮流周刊#58:最快运行原型的语言(摘要)

本周刊由 Python猫 出品,精心筛选国内外的 250 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 本期周刊分享了 12 篇文…

容易涨粉的视频素材有哪些?容易涨粉的爆款短素材库网站分享

如何挑选社交媒体视频素材:顶级视频库推荐 在社交媒体上脱颖而出,视频素材的选择至关重要。以下是一些顶级的视频素材网站推荐,不仅可以提升视频质量,还能帮助你吸引更多粉丝。 蛙学网:创意的源泉 作为创意和独特性的…

Databend db-archiver 数据归档压测报告

Databend db-archiver 数据归档压测报告 背景准备工作Create target databend table启动 small warehouse准备北京区阿里云 ECSdb-archiver 的配置文件准备一亿条源表数据开始压测 背景 本次压测目标为使用 db-archiver 从 MySQL 归档数据到 Databend Cloud, 归档的…

【王佩丰 Excel 基础教程】第一讲:认识Excel

文章目录 前言一、Excel软件简介1.1、历史上的其他数据处理软件与 Microsoft Excel1.2、Microsoft Excel 能做些什么1.3、Excel 界面介绍 二、Microsoft Excel 的一些重要概念2.1、Microsoft Excel 的几种常见文件类型2.2、工作簿、工作表、单元格. 三、使用小工具:…

Python_Socket

Python Socket socket 是通讯中的一种方式,主要用来处理客户端与伺服器端之串连,只需要protocol、IP、Port三项目即可进行网路串连。 Python套件 import socketsocket 常用函式 socket.socket([family], [type] , [proto] ) family: 串接的类型可分为…

GO内存管理

内存管理 内存管理 xxx内存分配 内存分配有两种方式:栈分配和堆分配- 栈分配是在函数调用时为局部变量分配内存,当函数返回时,这些内存会自动释放 - 堆分配则是通过 new 或者 make 函数动态分配内存,需要GC释放编译器会自动选择…

Java中的Checked Exception和Unchecked Exception的区别

在Java中,异常分为两大类:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 已检查异常是在编译时必须被捕获或声明的异常。换句话说,如果你的方法可能会抛出某个已检查异常&…

封装uview2的picker组件(uniapp)

1.源码 <template><view><view :class"[getPickerName ? : is-placeholder]" click"onShowPicker">{{ getPickerName || placeholder }}</view><u-picker v-if"showStatus" :show"show" :columns"…

力扣1504.统计全1子矩形

力扣1504.统计全1子矩形 开一个二维数组存每个点从它本身开始向左有多少连续的1 遍历矩形右下角(i,j) 再遍历行k in i每一行的矩形数量 minx min(minx,left(k,j)) class Solution {public:int numSubmat(vector<vector<int>>& mat) {int n mat.size();int…

Kubernetes面试整理-如何收集和管理Pod日志?

在 Kubernetes 中,收集和管理 Pod 日志是确保应用程序健康运行和进行故障排除的重要步骤。以下是几种常用的方法和工具,用于收集和管理 Pod 日志: 1. 使用 kubectl logs kubectl logs 命令是最简单的查看 Pod 日志的方法。它允许您查看单个容器的日志。 查看单个容器的日志:…