C#中Enum枚举类型的简单使用

2023-05-16

枚举类型的介绍: 

枚举类型是由一组特定常量构成的一组数据结构,是值类型的一种特殊形式,当需要一个由指定常量集合组成的数据类型时,使用枚举类型。枚举声明可以显式地声明 byte、sbyte、short、ushort、int、uint、long 或 ulong 类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是 int。 


注意点: 

1 对于没有赋值的枚举类型,声明的第一个枚举成员它的默值为零。以后的枚举成员值是将前一个枚举成员(按照文本顺序)的值加1得到的。 

2 允许多个枚举成员有相同的值。没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1。 

3 使用时注意类型转换。

可以看出枚举类型的本质都是数字类型。在显示的时候如果需要将枚举的值映射成其相对应的字符串,下边是一个简单的解决方法。

public enum DataTypeId
    {
        [StringValue("Money")]
        Money = 0,
        [StringValue("Number")]
        Number = 1,
        [StringValue("Datetime")]
        Datetime = 2,
        [StringValue("LongText")]
        LongText = 3,
        [StringValue("ShortText")]
        ShortText = 4,
        [StringValue("IdeaType")]
        IdeaType = 5,
        [StringValue("Status")]
        Status = 6
    }

    public class StringValue : System.Attribute
    {
        private string _value;

        public StringValue(string value)
        {
            _value = value;
        }

        public string Value
        {
            get { return _value; }
        }

    }

    public static class StringEnum
    {
        public static string GetStringValue(Enum value)
        {
            string output = null;
            Type type = value.GetType();

            FieldInfo fi = type.GetField(value.ToString());
            StringValue[] attrs =
               fi.GetCustomAttributes(typeof(StringValue),
                                       false) as StringValue[];
            if (attrs.Length > 0)
            {
                output = attrs[0].Value;
            }

            return output;
        }
    }


在使用的时候,只需要调用相应的方法就可以了 StringEnum.GetStringValue(DataTypeID.Money) 输出的字符串即为该MyDataTypeId枚举值对应的字符串


还有一种简单的方法能够得到枚举值对应的字符串,DataTypeID.Money.ToString()返回的就是Money字符串。在Web页面显示的时,DataTypeID.Money显示的是0,而DataTypeID.Money。ToString()返回的是Money这个字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#中Enum枚举类型的简单使用 的相关文章

  • C语言 -- enum 枚举的使用

    一 枚举的定义 枚举是C语言的一种基本的数据类型 enum 枚举名 枚举元素1 枚举元素2 我们以星期举例 enum DAY MON 61 1 TUE WED THU FRI SAT SUN 如果没有赋值 xff0c 第一个枚举成员的默认值
  • C#中的枚举 Enum和enum的区别

    枚举类型本质上是一个字典 xff0c 它将一组字符串映射到一组整数值 每个枚举常量都具有一个关联的整数值 xff0c 默认情况下 xff0c 第一个枚举常量的值为 0 xff0c 后续枚举常量的值会自动加 1 C 中有两种枚举类型 xff1
  • C++中枚举enum详解

    转载博客地址 xff1a https blog csdn net bruce 0712 article details 54984371 众所周知 xff0c C C 43 43 语言可以使用 define和const创建符号常量 xff0
  • c语言enum枚举字符串,c语言enum使用_enum枚举变量

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 二 enum枚举 1 枚举的定义 枚举类型定义的一般形式为 xff1a enum 枚举名 枚举值表 在枚举值表中应罗列出所有可用值 这些值也称为枚举元素 例如 xff1a 该枚举名为weekda
  • enum to string c++17 Magic Enum

    Magic Enum header only library provides static reflection for enums to string from string iteration for C 43 43 17 c 43
  • C++遍历输出enum枚举类型

    enum DAY MON TUE WED THU FRI SAT SUN 问题 如果使用如下方式来遍历 xff0c 则编译器会报类型转换失败错误 xff0c 因为enum类型没有 43 43 运算符 xff0c 也不支持 43 运算 for
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • C语言枚举类型(C语言enum用法)详解

    在实际编程中 xff0c 有些数据的取值往往是有限的 xff0c 只能是非常少量的整数 xff0c 并且最好为每个值都取一个名字 xff0c 以方便在后续代码中使用 xff0c 比如一个星期只有七天 xff0c 一年只有十二个月 xff0c
  • 推荐一个C++枚举转字符串的开源项目magic_enum

    文章目录 前言magic enum简单介绍具体使用原理简述局限性 简化与改进总结 前言 C 43 43 11引入了强类型的枚举类 enum class 用来代替旧风格枚举enum xff0c 新引入的 enum class 具有诸多优点 x
  • C++详解:枚举类型 --- enum | Xunlan_blog

    文章目录 一 概念二 定义枚举元素表 三 定义枚举对象的操作 四 要点 amp 技巧实例 一 概念 枚举类型 enumeration xff0c 是C 43 43 中的一种派生数据类型 xff0c 是用户创建的一个集合 xff0c 可以增加
  • java枚举(enum)使用详解

    文章目录 前言一 枚举类型定义二 访问成员三 遍历四 在switch xff08 xff09 中使用枚举五 方法1 内置方法1 1 ordinal 用于返回成员的索引1 2 compareTo 用于比较枚举类型中两个成员的索引值1 3 va
  • enum 实现 Parcelable 接口

    enum 实现 Parcelable 接口 当你创建一个枚举 xff0c 想要使用上述插件时 xff0c 就会发现无法序列号 这个是因为 Parcel writeXXX 没有写入枚举的方法 xff0c 所以无法直接实现 Parcelable
  • 枚举(enum)

    一 什么是枚举 我们学习过单例模式 xff0c 即一个类只有一个实例 而枚举其实就是多例 xff0c 一个类有多个实例 xff0c 但实例的个数不是无穷的 xff0c 是有限个数的 例如word文档的对齐方式有几种 xff1a 左对齐 居中
  • 【Mybatis】No enum constant org.apache.ibatis.type.JdbcType.LONG

    问题描述 xff1a 今天编写定时任务管理模块 xff0c 提交定时任务实体信息时 xff0c 提示如下错误 nested exception is org apache ibatis builder BuilderException Er
  • java enum(枚举)使用详解 + 总结

    enum 的全称为 enumeration xff0c 是 JDK 1 5 中引入的新特性 xff0c 存放在 java lang 包中 下面是我在使用 enum 过程中的一些经验和总结 xff0c 主要包括如下内容 xff1a 1 原始的
  • 深入理解Java枚举类型(enum)

    版权申明 未经博主同意 xff0c 谢绝转载 xff01 xff08 请尊重原创 xff0c 博主保留追究权 xff09 http blog csdn net javazejian article details 71333103 出自 z
  • Java枚举的使用

    枚举类型可以取代以往常量的定义方式 即将常量封装在类或接口中 此外 枚举类型还提供了安全检查功能 枚举类型本质上还是以类的形式存在 1 使用枚举类型设置常量 以往设置常量 通常将常量放置在接口中 这样在程序中就可以直接使用了 并且该常量不能
  • java枚举的集中管理

    java枚举的集中管理 一 产品中遇到的实际情况 枚举类泛滥 这个 这个 这个 这个 在 JDK 1 5 之前没有枚举类型 那时候一般用接口常量来替代 而使用 Java 枚举类型 enum 可以更贴近地表示这种常量 但是在项目中 就变成这样
  • 枚举类中通过code值获取对应的desc值

    Getter NoArgsConstructor public enum TaskRecordTypeEnum STOPTASK 0 禁用任务 STARTTASK 1 启用任务 private int code private String

随机推荐

  • Java 基础-08:打印三角形

    目录 1 根据手动输入数字 xff0c 打印该数字的直角三角形 xff08 直角在右上方 xff09 2 根据手动输入数字 xff0c 打印该数字的直角三角形 xff08 直角在左下方 xff09 3 根据手动输入数字 xff0c 打印该数
  • VMware虚拟机中Ubuntu忘记密码的解决办法

    在VMware中装的Ubuntu 16 04 xff0c 今天登录时候忘记了密码 xff0c 网上搜了一下 xff0c 结合自己实践 xff0c 最后重新设置了密码 步骤还是比较简单的 xff0c 具体如下 1 重启Ubuntu xff0c
  • QMetaEnum: C++ 中将枚举值自动转换为字符串

    当我们需要在日志中输出枚举类型的信息时 xff0c 如果只记录一个数字 xff0c 查看日志时就需要再去查找这个枚举值的意思 xff0c 不直观 xff0c 不方便 xff0c 我们会希望可以直接输出这个枚举值对应的字符串 比如下面这个枚举
  • 并查集详解与应用

    导引问题 题目描述 xff1a 某省调查城镇交通状况 xff0c 得到现有城镇道路统计表 xff0c 表中列出了每条道路直接连通的城镇 省政府 畅通工程 的目标是使全省任何两个城镇间都可以实现交通 xff08 但不一定有直接的道路相连 xf
  • I2C中的时钟同步与仲裁

    文章目录 时钟同步和仲裁1 时钟同步2 仲裁 时钟拉伸 系列文章 I2C总线 1 数据传输格式与7位地址读写 xff1b I2C总线 2 10位地址读写 xff1b I2C总线 4 高速模式 xff1b I2C总线 5 线与和上拉电阻 I2
  • Asp.net C# 获取本周上周本月上月本年上年第一天最后一天时间大全

    项目中用到了 xff0c 所以就写全了 xff0c 供参考使用 DateTime dt 61 DateTime Now int weeknow 61 Convert ToInt32 DateTime Now DayOfWeek int da
  • Maven常见的编译报错

    一 Maven编译报错AssertionError Maven 编译SpringBoot程序出现错误 xff1a 2022 09 21 06 38 52 UTC Exception in thread 34 main 34 java lan
  • 关于xwindow的一些事

    嗯 第一次写博客 xff0c 只是希望能把自己做项目的经历记录下来 之前经历的很多坑爹问题因为没有及时记录 xff0c 现在再碰到还是得翻阅网络的海量资源去寻找解决方法 xff0c 浪费时间浪费精力 xff0c 做了很久的东西放过老一想又觉
  • VMware安装CentOS 7.8详细图文教程(含网络配置)

    1 镜像下载 阿里镜像站 xff1a http mirrors aliyun com清华镜像站 xff1a https mirrors tuna tsinghua edu cn华为镜像站 xff1a http mirrors huaweic
  • golang 调用 python

    Golang中调用Python3 知乎 2 10 Go实现Python模块 Go语言高级编程 golang和python互相调用 dhcn 博客园 Golang调用Python Go语言中文网 Golang中文社区 golang调用pyth
  • E: 仓库 “http://mirrors.aliyun.com/ubuntu bionic-updates InRelease” 的签名不再生效。

    仓库 http mirrors aliyun com ubuntu bionic InRelease 的签名不再生效 E 无法下载 http mirrors aliyun com ubuntu dists bionic InRelease
  • iOS谓词做出自定义搜索效果

    void viewDidLoad super viewDidLoad 第一个数组为总库存 xff0c 第二个数组用来存储搜索后的结果 array 61 NSMutableArray array arrayb 61 NSMutableArra
  • Openstack云环境的登录和基本使用

    实验目的 xff1a xff08 1 xff09 掌握在Linux虚拟机内搭建Openstack的方法 xff08 2 xff09 在浏览器中可以运行Openstack客户端 实验内容及要求 xff1a xff08 1 xff09 进行Op
  • CentOS升级CMake

    今天在编译 Opencv 时 xff0c 在 cmake 阶段失败 xff0c 报类似下面的错误信息 xff1a CMake 3 5 2 or higher is required You are running version 3 4 0
  • 字符串排序

    题目描述 编写一个程序 xff0c 将输入字符串中的字符按如下规则排序 规则 1 xff1a 英文字母从 A 到 Z 排列 xff0c 不区分大小写 如 xff0c 输入 xff1a Type 输出 xff1a epTy 规则 2 xff1
  • postgresql 导入数据库表id自增报错问题处理

    情境再现 xff1a 使用postgresql xff0c 我们需要迁移表操作时 xff0c 转储sql语句再重新导入就会报错 xff0c 出现 xff1a ERROR relation 34 config id seq 34 does n
  • settings.xml配置及如果创建maven工程依赖文件报红 解决方法

    重设maven conf settings xml文件 span class token operator lt span span class token operator span xml version span class toke
  • mysql之my.cnf详解

    client port 61 3306 客户端端口号为3306 socket 61 tmp mysql sock 修改client配置 xff0c 不需要重启MySQL Server端 default character set 61 ut
  • VIM配置文件vimrc

    VIM配置文件vimrc Ubuntu 默认情况下只安装tiny vim xff0c 只要运行 sudo apt get install vim 安装完整的vim就好了 vimrc 下载 34 34 34 34 34 34 34 34 34
  • C#中Enum枚举类型的简单使用

    枚举类型的介绍 xff1a 枚举类型是由一组特定常量构成的一组数据结构 xff0c 是值类型的一种特殊形式 xff0c 当需要一个由指定常量集合组成的数据类型时 xff0c 使用枚举类型 枚举声明可以显式地声明 byte sbyte sho