Enum:枚举

简介: 原文: Enum:枚举 枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。

原文: Enum:枚举

枚举 (enum) 是值类型的一种特殊形式,它从 System.Enum 继承而来,并为基础的基元类型的值提供替代名称。枚举类型有名称、基础类型和一组字段。基础类型必须是一个内置的有符号(或无符号)整数类型(如 Byte、Int32 或 UInt64)。字段是静态文本字段,其中的每一个字段都表示常数。同一个值可以分配给多个字段,出现这种情况时,必须将其中某个值标记为主要枚举值,以便进行反射和字符串转换。

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型。枚举元素的默认基础类型为 int。通常枚举用来定义单选的一些场景,比如:

public enum Sex

{

/// <summary>

/// 男

/// </summary>

Male,

/// <summary>

/// 女

/// </summary>

Female

}

枚举和整型可以相互的转换,比如以下代码:

Sex sex = Sex.Female;

System.Console.WriteLine((int)sex);

System.Console.WriteLine((Sex)1);

System.Console.WriteLine((Sex)0);

默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。代码的运行结果如图3.1.30:

clip_image002

图3.1.30

我们也可以指定枚举的数值表达形式:

public enum Sex

{

/// <summary>

/// 男

/// </summary>

Male=5,

/// <summary>

/// 女

/// </summary>

Female=9

}

在这样的情况下,上面的代码的结果就有点耐人寻味了。结果如图3.1.31:

clip_image004

图3.1.31

我们给予了枚举中不存在的值,转换竟然没有报错,因此在处理枚举和整型转换的时候程序员需要自己判断转换的结果是否正确。

更有意思的是枚举中元素的值可以定义为负数。

public enum Sex

{

/// <summary>

/// 男

/// </summary>

Male = 1,

/// <summary>

/// 女

/// </summary>

Female =-1

}

不过在使用整型转换的时候就有一定的要求:若要强制转换某个负值,必须将该值放在括号内。

Sex sex = Sex.Female;

System.Console.WriteLine((int)sex);

System.Console.WriteLine((Sex)1);

System.Console.WriteLine((Sex)(-1));

目录
相关文章
|
安全 搜索推荐 Android开发
安卓与iOS:两大操作系统的比较
本文将深入探讨安卓和iOS两大操作系统的差异,包括它们的设计理念、用户界面、应用生态以及安全性等方面。通过对比分析,我们可以更好地理解这两个系统各自的优势和不足,从而为用户在选择手机时提供一些参考。
|
5月前
|
人工智能 算法 关系型数据库
AI编码不是梦:手把手教你指挥Agent开发需求
AI编码不是梦:手把手教你指挥Agent开发需求
2425 24
|
8月前
|
存储 消息中间件 Kafka
中原银行实时场景企业级解决方案
中原银行实时数据开发平台负责人杜威科在Flink Forward Asia 2024分享了银行业实时数据处理的经验。内容涵盖需求分析、解决方案、场景案例与现状展望。银行业需构建全链路、全场景的企业级实时数据平台,解决动账场景下的复杂计算需求。通过Flink+Paimon方案,实现高效更新、低成本存储与便捷查询。案例包括账户表实时更新入湖、交易协同优化、实时图应用、海量数据存储及业务人员易用性建设。未来目标是实现上千张表实时入湖,缩短延迟并探索AI结合的新场景。
303 2
中原银行实时场景企业级解决方案
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
2434 3
|
数据采集 分布式计算 监控
深入调查研究 Kettle
【10月更文挑战第20天】
228 0
|
存储 人工智能 数据管理
"AI大改造,让NAS焕发新生!智能分类、秒速检索、隐私守护、故障先知……你的数据存储神器全面升级,告别传统,拥抱未来智能NAS新纪元!"
【8月更文挑战第14天】大数据时代催生了对高效数据管理的需求,传统NAS面临挑战。AI技术的应用为NAS带来智能数据分类、内容分析检索、安全防护及预测性维护等功能。通过示例代码展示了AI如何简化数据管理、提升用户体验、保障数据安全及提高系统稳定性。集成AI的NAS正引领数据存储新时代。
564 3
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
6638 1
|
安全 算法 网络安全
构建未来:量子计算在加密破解中的应用展望
随着量子信息科学的迅猛发展,量子计算技术已逐渐从理论走向实践。本文旨在探讨量子计算对传统加密算法的冲击及其在未来加密破解领域的应用潜力。通过分析量子计算的基本原理和目前的技术进展,我们着重讨论了量子计算机如何处理复杂的数学问题,以及它如何能够在理论上破解广泛使用的公钥加密体系。文章还提出了针对量子计算威胁下的加密策略调整建议,为未来的信息安全布局提供参考。
558 1
|
SQL 存储 分布式计算
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
本文将会深入介绍DATE和TIMESTAMP
Spark 3.0 对于 DATE 和 TIMESTAMP 的改进
|
云安全 运维 Kubernetes
东风日产数据服务有限公司借力服务网格,实现7层流量精细化管控
东风日产数据服务有限公司引入阿里云服务网格ASM,构建了基于流量管理的「无限生肖」系统,满足了自动按需提供环境的诉求。
4112 81
东风日产数据服务有限公司借力服务网格,实现7层流量精细化管控