【C#枚举 Enum】

news2024/11/24 4:45:27

C#枚举 Enum
一、枚举

1、枚举是将变量的值罗列出来,变量的值只限于列举出来的值的范围。

2、枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。

3、枚举是值类型。

4、枚举是隐式密封的,不允许作为基类派生子类。

5、枚举类型的枚举成员均为静态,默认为Int32类型。

6、枚举成员不能相同,但枚举的值可以相同。

7、枚举成员是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。

二、声明枚举(注意:最后一个没有“逗号”)

1、不给成员赋值,成员的常数值默认从0开始。

public enum Week
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
2、给成员赋值,下一个成员的值为上一个成员值+1

public enum Number
{
One = 1,
Two,
Three,
Seven = 7,
Eight,
Nine
}
3、枚举可以继承byte、sbyte、short、ushort、 int、 uint、long 或 ulong

public enum Month : byte
{
January,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
}
4、枚举成员的值可以等于某个成员加上一个值

public enum MachineState
{
PowerOff = 0,
Running = 1,
Sleeping = 2,
Hibernating = Sleeping + 3
}
三、枚举的简单使用

1、转成整数

int i = (int)Week.Sunday;
2、转成字符串

string s = Week.Sunday.ToString();
3、GetName方法:在指定枚举中检索具有指定值的常数的名称。

string strToday = Enum.GetName(typeof(Week), 3);
4、GetNames方法: 检索指定枚举中常数名称的数组。

string[] array1= Enum.GetNames(typeof(Week));
Array array2 = Enum.GetNames(typeof(Week));
5、GetUnderlyingType方法:返回指定枚举的基础类型。

Type type = Enum.GetUnderlyingType(typeof(Week));
6、GetValues方法:检索指定枚举中常数值的数组。

Array array3 = Enum.GetValues(typeof(Week));
7、Parse方法:将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。

string s1 = Enum.Parse(typeof(Week), “3”).ToString();
int j = Convert.ToInt32(Enum.Parse(typeof(Week), “Wednesday”));
//默认第三个参数为false,当传true时忽略大小写
int k = Convert.ToInt32(Enum.Parse(typeof(Week), “wednesday”, true));
8、Format方法:根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式。

string s2 = Enum.Format(typeof(Week), 3, “G”);
9、IsDefined方法:返回指定枚举中是否存在具有指定值的常数的指示。

bool b = Enum.IsDefined(typeof(Week), 3);
10、ToObject方法: 将具有整数值的指定对象转换为枚举成员。

string s3 = Enum.ToObject(typeof(Week),3).ToString();
11、TryParse方法:将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。

Week w;
bool b1 = Enum.TryParse(“Wednesday”, out w);
四、枚举的特殊使用

//遍历枚举 foreach (var s in Enum.GetValues(typeof(Status))) { Console.WriteLine(s); }//Enum.GetValues返回的是一个数组

public enum enumStudent {

//枚举添加描述《枚举和反射的使用》

[Description(“性别”)]

sex = 0,

[Description(“年龄”)]

age = 1

}

//枚举的FLAG特性(对应的位编辑,不存在3这个值,是8、4、2、1)

[Flags] public enum Roles { Admin = 1 << 0, Member = 1 << 1, Manager = 1 << 2, Operator = 1 << 3 }

[Flags] public enum Roles { Admin = 1, Member = 2, Manager = 4, Operator = 8 } 1: 00000001 2: 00000010 4: 00000100 8: 00001000

//枚举和数组的使用(数组集合转化成类型)
在这里插入图片描述

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

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

相关文章

java项目之个人健康信息管理(ssm+jsp)

项目简介 个人健康信息管理实现了以下功能&#xff1a; 管理员&#xff1a;首页、个人中心、用户管理、医师管理、饮食记录管理、运动记录管理、健康信息管理、健康评估管理、健康知识管理、系统管理。用户&#xff1a;首页、个人中心、饮食记录管理、运动记录管理、健康信息…

3D全景技术,为我们打开全新宣传领域

随着科技的发展&#xff0c;3D全景技术正在融入我们的生活&#xff0c;这种全新视觉体验方式为我们打开了一扇全新的宣传领域&#xff0c;可以让我们多方位、多视角地探索各个行业&#xff0c;无论是对教育、商业、还是其他领域&#xff0c;都产生了深远的影响。 3D全景技术结合…

QTabBar实验

目的&#xff1a; 研究QTabBar::currentChanged与QTabBar::tabBarClicked这两个信号的触发条件。 现象&#xff1a; 最开始时&#xff0c;信号都未被触发。 当点击标签时&#xff0c;两个信号都被触发&#xff0c;如下图&#xff1a; 而使用 tab_bar->setCurrentIndex(…

领导说,效率越高的人,越擅长数据可视化

领导说效率越高的人&#xff0c;就越擅长数据可视化&#xff0c;因为他们总能找到操作简单、指标计算又快又准、分析效率极高的数据可视化工具&#xff0c;比如说奥威BI数据可视化工具。 奥威BI数据可视化工具&#xff0c;集齐一个高效BI数据可视化工具的五大使用优点&#xf…

Unix环境高级编程-学习-02-进程环境之进程终止、命令行参数、环境表、C程序的存储空间布局

目录 一、环境信息 二、声明 三、进程终止 1、情况分类 2、退出函数 3、退出实验 &#xff08;1&#xff09;main声明int和调用return值 &#xff08;2&#xff09;main声明int和不调用return &#xff08;3&#xff09;main声明不int和不调用return 4、atexit 5、at…

chrome安装vue devtools

不能访问应用商店 如果可以访问应用商店可以往下看 插件源代码 选择shell-chrome&#xff0c;这是官方的插件源码 下载源代码打包 参考教程 点击扩展按钮->管理扩展程序->打开开发者模式->把crx文件拖拽进去即可 可以访问chrome应用商店 插件地址 官方文档地址 选…

浅谈开源策略的实例:CGAL计算几何库

免责声明&#xff1a;本博客旨在分享我对开源策略的理解和体会&#xff0c;不代表任何组织或机构的立场或观点&#xff0c;也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏&#xff0c;也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…

十四、W5100S/W5500+RP2040树莓派Pico<NetBIOS>

文章目录 1 前言2 简介2 .1 什么是NetBIOS&#xff1f;2.2 NetBIOS的优点2.3 NetBIOS工作原理2.4 NetBIOS应用场景 3 WIZnet以太网芯片4 NetBIOS网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着…

Android14前台服务适配指南

Android14前台服务适配指南 Android 10引入了android:foregroundServiceType属性&#xff0c;用于帮助开发者更有目的地定义前台服务。这个属性在Android 14中被强制要求&#xff0c;必须指定适当的前台服务类型。以下是可选择的前台服务类型&#xff1a; camera: 相机应用。…

antd-vue + vue3 实现a-table动态增减行,通过a-from实现a-table行内输入验证

一、效果图 图一&#xff1a;校验效果 二、主要代码 注意&#xff1a; 1、form 与 table 绑定的是同一个数据 tableSource 并且是一个数据&#xff08;ElementUI 需要 对象包数组&#xff09; 2、form用的是 name 绑定 -> :name"[index, vlan_id]" 3、form-i…

MES管理系统中常规的生产建模有哪些

随着制造业的快速发展&#xff0c;MES生产管理系统已经成为了现代制造业不可或缺的核心系统。MES通过对生产过程进行建模&#xff0c;实现了生产过程的可视化、可控制和可优化&#xff0c;为企业提供了全方位的生产管理解决方案。本文将深化对MES管理系统及其主要生产模型的理解…

React构建组件的方式有哪些?区别?

一、是什么 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念&#xff08;组件&#xff09;来实现开发的模式 在React中&#xff0c;一个类、一个函数都可以视为一个组件 在之前文章中&#xff0c;我们了解到组件所存在的优势&#xff1a; 降低整个系统的耦合度&am…

大功率继电器 UEG/F-4DPDT EDP01-RDI/1抗干扰型 轨道继电器 josef约瑟

UEG/F系列抗干扰型中间继电器电力系统和工业自动化的装置中,明确而可靠的信号护展和电隔离技术变得日益重要.UEG/F系列抗干扰继电器应用在电力系统及工业控制领域中,用于外界干扰较大的接点信号的重动、采集。 系列型号 UEG/F-2H2D抗干扰中间继电器;UEG/F-1H1D抗干扰中间继电器…

中国电子学会2023年09月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2023-09 Scratch四级真题 分数&#xff1a;100 题数&#xff1a;24 测试时长&#xff1a;60min 一、单选题(共10题&#xff0c;共30分) 1.角色为一个紫色圆圈&#xff0c;运行程序后&#xff0c;舞台上的图案是&#xff1f;&#xff08;A &#xff09;(3分) A. B. C. …

【云栖2023】林伟:大数据AI一体化的解读

本文根据2023云栖大会演讲实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;林伟 | 阿里云研究员&#xff0c;阿里云计算平台事业部首席架构师&#xff0c;阿里云人工智能平台PAI和大数据开发治理平台DataWorks负责人 演讲主题&#xff1a;大数据AI一体化…

dart中字符串的常用操作方法函数,和python有点像

在开发语言中&#xff0c;字符串操作可谓是非常的多&#xff0c;所以需要记住很多字符串这类的相关函数和方法&#xff0c;至少最常用的几种是要记住的&#xff1a;切分&#xff0c;包含&#xff0c;查找&#xff0c;是否以XX开头等等 void run() {var str1 "你好&#…

moc_ XX.cpp 中的函数没有定义

解决办法&#xff1a; 直接将 moc_OnlyTest.cpp 文件&#xff0c;添加到工程目录下&#xff0c;解决。

使用swagger-typescript-api

引言 前后端分离大致是这样的 后端&#xff1a;控制层 / 业务层 / 数据操作层前端&#xff1a;控制层 / 视图层 前后端的控制层&#xff0c;实际上就是前后端接口的对接 前后端分离&#xff0c;实现了更好地解耦合&#xff0c;但也引入了接口对接的过程&#xff0c;这个过程…

什么是外贸SOHO建站?新手如何做好推广?

新手外贸SOHO建站教程&#xff1f;海洋建站谷歌SEO优化步骤&#xff1f; 外贸SOHO建站是一种为小型外贸企业和个体经营者提供的网站建设服务&#xff0c;旨在帮助他们在国际市场上建立自己的在线存在&#xff0c;从而拓展业务。海洋建站将深入探讨外贸SOHO建站的含义&#xff…

vue下使用Echarts5绘制基础图表

项目使用Vue3加Echarts5绘制的基本图表&#xff0c;图表自适应浏览器窗口大小 先上图&#xff0c;大屏小屏都可完美展示&#xff0c;纯属练手 一 先上图 1.任意缩放窗口的大小 2.平板 3.电脑 4.饼图 5.折线图 二 后上代码 <script lang"ts"> import {d…