C#,入门教程(11)——枚举(Enum)的基础知识和高级应用

ops/2025/2/2 14:26:29/

上一篇:

C#,入门教程(10)——常量、变量与命名规则的基础知识https://blog.csdn.net/beijinghorn/article/details/123913570

不会枚举,就不会编程!

枚举 = 一个有组织的常量系列

比如:一个星期每一天的名字,周一、周二。。。周日。

所有成系列的常量都应该用枚举方式加以定义与使用。

一、枚举的定义

C#用 enum 定义枚举

每个项都被自动赋予了一个(整数类型)值。对于整数类型,项值是递增的。默认是从 0 开始的,也就是项 1 的值是 0、项 2 的值是 1。如果不需要系统自动为项指定值,也可以直接为其赋一个(数)值。每个没有指定值的项,它的初始值都是上一个项的值 +1。可以任意指定某项为特定的值。拗口吧?看文字学不到的,多看看代码就能理解了。

1、基本格式

// 完整方式
访问修饰符 enum 枚举名字 : 数据类型(可无)
{枚举项 = 初值(可无),
}// 实例
public enum GradeName : int
{幼儿园 = 0,小学,初中,高中,大学 = 10,硕士,博士
}

2、简约模式


// 简约模式(默认数据类型int)
// 第一项,默认从0开始
public enum GradeName
{Undefined = -1,幼儿园,小学,初中,高中,大学,硕士,博士
}

二、枚举的使用

定义好的枚举,类似于一种数据类型,用起来与 int 、double 差不多。

// 类
public class StudentInfo
{public GradeTitle Grade { get; set; } = GradeTitle.Undefined;
}// 幼儿园毕业?毕业证呢?
// 拿不出来?那你没有最低学历!
if(firstStudent.Grade == GradeTitle.幼儿园)
{;
}

又:所有枚举的第一个项一定是 Undefined !!!

枚举很简单,用好不简单。

三、枚举与字符串的对照方法

有些情况下,为了代码或结果的可阅读性,期望将 枚举 与 字符串对照起来。

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;namespace DataBeginner
{public partial class Form1 : Form{public Form1(){InitializeComponent();this.StartPosition = FormStartPosition.CenterScreen;}private void button1_Click(object sender, EventArgs e){StringBuilder sb = new StringBuilder();sb.AppendLine("2 is " + EnumDescription(EnglishNumbers.Two));webBrowser1.DocumentText = sb.ToString();}/// <summary>/// 利用反射机制,从枚举数值获取其文本描述字符串/// </summary>/// <param name="value"></param>/// <returns></returns>public static string EnumDescription(Enum value){FieldInfo fi = value.GetType().GetField(value.ToString());DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);return (attributes.Length > 0) ? attributes[0].Description : value.ToString();}}public enum EnglishNumbers{[Description("One")] One = 1,[Description("Two")] Two = 2,[Description("Three")] Three = 3,[Description("Four")] Four = 4,[Description("Five")] Five}
}

下一篇:

C#,入门教程(12)——数组及数组使用的基础知识https://blog.csdn.net/beijinghorn/article/details/123918227


http://www.ppmy.cn/ops/155053.html

相关文章

论文阅读(十三):复杂表型关联的贝叶斯、基于系统的多层次分析:从解释到决策

1.论文链接&#xff1a;Bayesian, Systems-based, Multilevel Analysis of Associations for Complex Phenotypes: from Interpretation to Decision 摘要&#xff1a; 遗传关联研究&#xff08;GAS&#xff09;报告的结果相对稀缺&#xff0c;促使许多研究方向。尽管关联概念…

python recv的概念和使用案例

recv 是网络编程中用于从套接字接收数据的核心函数&#xff0c;常见于 TCP/UDP 通信。以下是其概念、用法和案例详解&#xff1a; 概念 作用&#xff1a;从已连接&#xff08;TCP&#xff09;或已绑定&#xff08;UDP&#xff09;的套接字接收数据。参数&#xff1a; bufsize:…

PHP中配置 variables_order详解

variables_order 是 PHP 配置文件 php.ini 中的一项配置指令&#xff0c;决定了 PHP 在处理请求时&#xff0c;哪些类型的变量将被注册到全局变量空间&#xff08;如 $GLOBALS&#xff09;中&#xff0c;以及这些变量的顺序。理解和正确配置 variables_order 对于开发和维护安全…

力扣动态规划-14【算法学习day.108】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…

LangChain教程 - RAG - PDF解析

在现代人工智能和自然语言处理&#xff08;NLP&#xff09;应用中&#xff0c;处理PDF文档是一项常见且重要的任务。由于PDF格式的复杂性&#xff0c;包含文本、图像、表格等多种内容结构&#xff0c;高效、准确地解析PDF需要强大的工具支持。LangChain提供了一套完善的PDF加载…

具身智能体空间感知基础!ROBOSPATIAL:评测并增强2D和3D视觉语言模型空间理解水平

作者&#xff1a;Chan Hee Song, Valts Blukis,Jonathan Tremblay, Stephen Tyree, Yu Su, Stan Birchfield 单位&#xff1a;俄亥俄州立大学&#xff0c;NVIDIA 论文标题&#xff1a;ROBOSPATIAL: Teaching Spatial Understanding to 2D and 3D Vision-Language Models for …

DeepSeek Janus-Pro:多模态AI模型的突破与创新

近年来&#xff0c;人工智能领域取得了显著的进展&#xff0c;尤其是在多模态模型&#xff08;Multimodal Models&#xff09;方面。多模态模型能够同时处理和理解文本、图像等多种类型的数据&#xff0c;极大地扩展了AI的应用场景。DeepSeek(DeepSeek-V3 深度剖析&#xff1a;…

Xposed-Hook

配置 Xposed 模块的 AndroidManifest.xml&#xff1a; <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"your.package.name"><applicationandr…