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

news/2024/5/18 23:03:34 标签: c#, 算法, 开发语言, 枚举, enum

上一篇:

C#,入门教程(10)——常量、变量与命名规则的基础知识icon-default.png?t=N7T8https://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)——数组及数组使用的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/123918227


http://www.niftyadmin.cn/n/5313824.html

相关文章

pycharm使用anaconda虚拟环境创建项目

相关内容1&#xff1a;anaconda和pycharm的安装使用介绍 使用Pycharm创建一个Django项目 1、PyCharm汉化2、使用anaconda虚拟环境创建项目2.1、新建项目2.2、添加解释器2.3、运行manage.py&#xff0c;检查站点是否安装成功2.4、删除解释器 因为每个项目需要的扩展包和环境版本…

从零开发短视频电商 Tesseract OCR 的 Java 拓展库 javacpp-presets

文章目录 简介添加依赖识别示例示例一 识别本地图片示例二 识别图像中的各个组件&#xff08;比如文本行&#xff0c;单词&#xff0c;或单个字符&#xff09;示例三 使用迭代器遍历识别结果及其选择项示例四 方向和脚本检测示例五 结果迭代器示例六 设置引擎、页面分割模式、语…

c++跨平台ui

fltk https://gitee.com/mirrors_fltk/fltk.git codeblock中有fltk项目开发模板,可以快速构建项目 wxwidget https://gitee.com/sofu456/wxWidgets.git git submodule update --init --recursive 打开demo和sample set(wxBUILD_SAMPLES ALL) set(wxBUILD_DEMOS ON) build/…

go image.DecodeConfig 和image.Decode 不能同时使用吗

问题场景&#xff1a;在同时使用go image.DecodeConfig 和image.Decode获取图片信息时&#xff0c;报错提示&#xff1a; 无法读取图像配置 image: unknown format package mainimport ("fmt""github.com/golang/freetype""image""image/d…

用 MATLAB 产生单位抽样序列、单位阶跃序列、矩形序列、正弦序列和复指数序列

%% 单位抽样&#xff08;脉冲&#xff09;序列&#xff08;冲激函数&#xff09; % 参数设置 n -10:10; % 定义时间范围 delta (n 0); % 生成单位抽样序列% 绘图 figure; stem(n, delta); title(单位抽样序列); xlabel(n); ylabel(delta[n]);%% 单位阶跃序列 % 参数设置 n …

学习今说,与君共勉

记得刚步入社会&#xff0c;对自己的将来还比较迷茫&#xff0c;特意请教学长们如何做职业规划&#xff0c;得到最多的一个建议是&#xff1a;工作了&#xff0c;要坚持两件事情&#xff1a;“学习”与“锻炼”。如今已经在职场打拼十多年&#xff0c;这两件事情已经成为习惯&a…

如何利用docker来部署war包项目

首先编写dockerfile文件&#xff1a; # 使用官方的Tomcat镜像作为基础镜像 FROM tomcat:9.0# 将war包复制到容器的webapps目录下 COPY xxxx.war /usr/local/tomcat/webapps/# 暴露Tomcat的默认端口 EXPOSE 8080 编写docker-compose.yml文件&#xff1a; version: 3 services…

PTA✨C语言 求1到N的和

7-6 求1到N的和 分数 15 全屏浏览题目 切换布局 作者 颜晖 单位 浙大城市学院 本题要求编写程序&#xff0c;计算序列 1 2 3 ... 的前N项之和。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S&#xff0c;请注意…