C# 枚 举(枚举)

枚举

枚举是由程序员定义的类型,与类或结构一样。

  • 与结构一样,枚举是值类型:因此直接存储它们的数据,而不是分开存储成引用和数据。
  • 枚举只有一种类型的成员:命名的整数值常量。
    下面的代码展示了一个示例,声明了一个名称为TrafficLight的新枚举类型,它含有3个成
    贝。注意成员声明列表是逗号分隔的列表,在枚举声明中没有分号。
enum TrafficLight
{Green,  //逗号分割,没有分号Yellow, //逗号分割,没有分号Red
}

每个枚举类型都有一个底层整数类型,默认为int。

  • 每个枚举成员都被赋予一个底层类型的常量值。
  • 在默认情况下,编译器对第一个成员赋值为0,对每一个后续成员赋的值都比前一个成员多1。

例如,在TrafficLight类型中,编译器把int值0、1和2分别赋值给成员Green、Yellow
和Red。在下面代码的输出中,把它们转换成类型int,可以看到底层的成员值。图12-1阐明了
它们在栈中的排列。

enum TrafficLight
{Green,  //逗号分割,没有分号Yellow, //逗号分割,没有分号Red
}TrafficLight t1=TrafficLight.Green;
TrafficLight t2=TrafficLight.Yellow;
TrafficLight t3=TrafficLight.Red;Console.WriteLine($"{t1},\t{(int)t1}");
Console.WriteLine($"{t2},\t{(int)t2}");
Console.WriteLine($"{t3},\t{(int )t3}");

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以把枚举值赋给枚举类型变量。例如,下面的代码展示了3个TrafficLight类型变量的声
明。注意可以把成员字面量赋给变量,或从另一个相同类型的变量复制值。

class Program
{enum TrafficLight{Green,  //逗号分割,没有分号Yellow, //逗号分割,没有分号Red}TrafficLight t1=TrafficLight.Green;TrafficLight t2=TrafficLight.Yellow;TrafficLight t3=TrafficLight.Red;Console.WriteLine(t1);Console.WriteLine(t2);Console.WriteLine(t3);
}

这段代码产生以下输出。注意,成员名被当作字符串打印。

设置底层类型和显式值

可以把冒号和类型名放在枚举名之后,这样就可以使用int以外的整数类型。类型可以是任
何整数类型。所有成员常量都属于枚举的底层类型。

enum TrafficLight:ulong
{...
}

成员常量的值可以是底层类型的任何值。要显式地设置一个成员的值,在枚举声明中的变量
名之后使用初始化表达式。尽管不能有重复的名称,但可以有重复的值,如下所示。

enum TrafficLight
{Green=10,Yellow=15,Red=5
}

例如,图12-2中的代码展示了枚举TrafficLight的两个等价声明。

  • 左边的代码接受默认的类型和编号。
  • 右边的代码显式地将底层类型设置为int,并将成员设置为与默认值相应的值。

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

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

相关文章

一文详解前缀和:从一维到二维的高效算法应用

文章目录 一、一维前缀和​1. 基本概念​2. C 代码实现​3. 应用场景​ 二、二维前缀和1. 基本概念​2. C 代码实现​3. 应用场景​ 三、总结​ 在算法竞赛和日常的数据处理工作中,前缀和是一种极其重要的预处理技术。它能够在常数时间内回答多次区间查询&#xff0…

windows 开发

文章目录 环境搭建数据库关键修改说明:在代码中使用该连接字符串:注意事项:实际使用 都说几天创造一个奇迹,现在是真的这样了,Just do it! 环境搭建 数据库 需要下载这个SQL Server数据库,然后每次Visua…

免费OCPP协议测试工具

免费OCPP 1.6J协议测试工具,简单实用。除加密功能外(后续版本支持),支持所有消息调试。 后续将添加2.01和和2.1协议支持. 欢迎使用 Charge-Test

高等数学基础(行列式和矩阵的秩)

行列式主要用于判断矩阵是否可逆及计算特征方程 初见行列式 行列式起源于线性方程组求解 { a 11 x 1 a 12 x 2 b 1 a 21 x 1 a 22 x 2 b 2 \begin{cases} a_{11}x_1 a_{12}x_2 b_1 \\ a_{21}x_1 a_{22}x_2 b_2 \end{cases} {a11​x1​a12​x2​b1​a21​x1​a22​x2…

开心灿烂go开发面试题

1.给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] package main import “fmt” type ListNode struct { Val int Next *ListNode } func main() { l1 : &…

【Flutter】程序报错导致的灰屏总结

【Flutter】程序报错导致的灰屏总结 一、前言 在 Flutter 中,出现“灰屏”(grey screen)通常意味着 应用发生了未捕获的错误,导致框架无法正确构建 UI。 这也是在面试过程中常常问到的。 二、错误分类 常见的会导致灰屏的错误…

基于物联网设计的智慧家庭健康医疗系统

1. 项目开发背景 随着物联网(IoT)技术的发展,智能家居系统逐渐融入到我们的日常生活中,成为提高生活质量、增强家庭安全、提升健康管理的重要工具。特别是在健康医疗领域,借助物联网技术,智能家居不仅能够…

设计模式精讲 Day 1:单例模式(Singleton Pattern)

【设计模式精讲 Day 1】单例模式(Singleton Pattern) 文章内容 开篇 在软件开发中,设计模式是解决常见问题的通用解决方案。作为“设计模式精讲”系列的第一天,我们将深入讲解单例模式(Singleton Pattern&#xff09…

【卫星通信】3GPP标准提案:面向NB-IoT(GEO)场景的IMS信令优化方案-降低卫星通信场景下的语音呼叫建立时延

一、引言 随着5G非地面网络(NTN)技术的演进,基于NB-IoT的卫星通信(如GEO地球同步轨道卫星)逐渐成为偏远地区语音服务的重要补充。然而,传统IP多媒体子系统(IMS)的信令流程在带宽受限…

软件测试之简单基础的安全测试方法(另外包含软测面试题库)

文章目录 前言安全测试是什么简单基础的安全测试方法密码安全操作权限验证SQL注入xss脚本攻击文件上传下载安全漏洞扫描Web扫描APP扫描 面试题库(仅参考)参考目录 前言 阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相…

LCEL:LangChain 表达式语言详解与测试工程师的实践指南

引言 在 AI 应用开发中,如何高效地组合多个步骤(如提示模板、模型调用、输出解析)并优化执行流程,是开发者和测试工程师共同面临的挑战。LangChain Expression Language (LCEL) 作为 LangChain 的核心功能之一,提供了…

LeetCode面试经典150题—旋转数组—LeetCode189

原题请见:Leetcode189-旋转数组 1、题目描述 2、题目分析 首先容易想到的最简单的方案,是算出来移动K步之后,新数组的每一个坐标与原坐标的映射关系,然后根据映射关系放到一个全新的数组,再把新数组的值赋给原数组。…

2.5 Rviz使用教程

新建终端,键入命令 roslaunch wpr_simulation wpb_simple.launch 再新建终端,键入命令 rviz修改Fix Frame 为 base_footprint 点击add之后选择RobotModel 再增加一个LaserScan 选择激光雷达话题 可视化效果 配置的两种方法 1.在Gazebo运行的基础上&…

基于SpringBoot+JSP开发的招投标采购信息平台

角色: 管理员、普通用户 技术: 后端:Spring Boot Mybatis-Plus MySQL 前端:JSP 核心功能: 该平台是一个用于管理投标和招标信息的系统,主要提供信息发布、用户管理和交易管理等核心功能。 功能介绍…

【项目实训#10】HarmonyOS API文档RAG检索系统后端实现

【项目实训#10】HarmonyOS API文档RAG检索系统后端实现 文章目录 【项目实训#10】HarmonyOS API文档RAG检索系统后端实现一、背景简介二、RAG技术原理与架构设计2.1 RAG技术原理回顾与提升2.2 系统架构设计 三、RAG引擎核心实现3.1 RAG引擎初始化3.2 查询向量化3.3 文档检索实现…

专注于PLC数据采集MES交互解决方案

专注于PLC数据采集MES交互解决方案 前篇文章我们讲到当下的制造行业在工业4.0的大趋势下,MES系统成为现场制造过程管制的有利武器,更是质量追踪的一把好工具。我们要知道产品在各个加工环节的结果。除了人工在各个制造环节录入制造结果外,更…

微信小程序实现文字逐行动画效果渲染显示

1. 微信小程序实现文字逐行动画效果渲染显示 在微信小程序开发中,为了文字逐行动画效果渲染可以通过JavaScript 和 WXML 的动态数据绑定来实现,实现文字逐行显示的效果,同时结合 CSS 动画提升视觉体验。   如果需要更复杂的动画效果(如缩放、移动等),可以使用微信小程序…

Redux 原理深度剖析

1. Redux 实现 定义 Action 和 Reducer 类型,为了简便,先用JavaScript来演示。 1.1. 定义Action和Reducer类型 // 定义 Action 类型 /*** typedef {Object} Action* property {string} type*/// 定义 Reducer 类型 /*** callback Reducer* param {any…

【LangChain】4 基于文档的问答

对于给定的文档, 比如从PDF、网页、公司主页中提取构建的内部文档集合,我们可以使用大语言模型来回答关于这些文档内容的问题,以帮助用户更有效地获取和使用他们所需要的信息。这种方式非常有效且灵活地适用于实际应用场景,因为它不仅仅利用大…

基于Netty的TCP Server端和Client端解决正向隔离网闸数据透传问题

背景 因为安装了正向隔离网闸&#xff0c;导致数据传输的时候仅支持TCP协议和UDP协议&#xff0c;因此需要开发TCP Client和Server服务来将数据透传&#xff0c;当前环境是获取的数据并将数据转发到kafka 1.引入依赖 <dependency><groupId>io.netty</groupId>…