广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中的枚举类型(Enum)介绍
  • 171
分享到

C#中的枚举类型(Enum)介绍

2024-04-02 19:04:59 171人浏览 安东尼
摘要

枚举(Enum)定义 enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方

枚举(Enum)定义

enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。现在的有些电商网站根据购物的积分用到的,金牌会员,银牌会员,铜牌会员.

enum MemberLevel
{
    Gold,
    silver,
    copper
}

枚举值获取

一般获取的时候包括获取变量和变量值,默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1。直接使用Enum中的静态方法即可操作.GetValues中获取的是枚举变量的值,类型是枚举名,之后自动输出的是枚举名.

string s = Enum.GetName(typeof(MemberLevel), 3);
 Console.WriteLine(s);
 
 Console.WriteLine("MemberLevel中的值:");
 foreach (int i in Enum.GetValues(typeof(MemberLevel)))
     Console.WriteLine(i);
 Console.WriteLine("MemberLevel中的值(注意类型):");
 foreach (MemberLevel i in Enum.GetValues(typeof(MemberLevel)))
     Console.WriteLine(i);
 
 Console.WriteLine("MemberLevel中的变量:");
 foreach (string str in Enum.GetNames(typeof(MemberLevel)))
     Console.WriteLine(str);
 System.Console.Read();

枚举类型

曾经很长的一段时间自己一度以为枚举的值只能是int类型,其实每种枚举类型都有基础类型,该类型可以是除 char以外的任何整型(重点)。枚举元素的默认基础类型为 int.准许使用的枚举类型有byte、sbyte、short、ushort、int、uint、long 或 ulong。如果枚举值为long,如下所示:

enum MemberLevel:long
{
    gold = 2147483648L,
    silver=232L,
    copper=10L
}

枚举Flags和Description特性值

可以使用枚举类型定义位标志,从而使该枚举类型的实例可以存储枚举数列表中定义的值的任意组合。创建位标志枚举的方法是应用System.FlagsAttribute特性并适当定义一些值,以便可以对这些值执行AND、OR、NOT和XOR按位运算。一般情况下如果零值不表示“未设置任何标志”,则请不要为标志指定零值.

[Flags]
enum MemberLevel
{
    [Description("二进制表示为1----0001")]
    gold = 0x1,
    [Description("二进制表示为4----0010")]
    silver = 0x04,
    [Description("二进制表示为16----0100")]
    copper = 0x10
}

程序运行如下所示:

// 0001(Gold) and 0100(silver) => 0101(5).
MemberLevel options = MemberLevel.gold | MemberLevel.silver;
Console.WriteLine(options);
Console.WriteLine((int)options);
System.Console.Read();

上面的基本上属于入门的知识,在项目中通常用到的是在枚举变量上面加上Description,需要显示的枚举的特性值,枚举的值一般为int在数据库中占用空间比较小,枚举的变量用于给数据库中的字段赋值,那么如果要显示字段就需要考虑到Descripttion特性,显示中文名称,例如一个用户的的等级在数据中存储的是1,显示的时候显示为金牌用户,当然也可以使用switch,if..else..去判断,如果枚举比较多,自己写的也很不爽.特性这个时候刚发挥作用了,如下所示:

[Description("会员等级")]
enum MemberLevel
{
    [Description("金牌会员")]
    gold =1,
    [Description("银牌会员")]
    silver = 2,
    [Description("铜牌会员")]
    copper =3
}

首先来写一个扩展,静态类,静态方法,this关键字,istop主要是用来获取枚举上面的描述.

public static class EnumHelper
{
    /// <summary>
    /// 返回枚举项的描述信息。
    /// </summary>
    /// <param name="value">要获取描述信息的枚举项。</param>
    /// <returns>枚举想的描述信息。</returns>
    public static string GetDescription(this Enum value, bool isTop = false)
    {
        Type enumType = value.GetType();
        DescriptionAttribute attr = null;
        if (isTop)
        {
            attr = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
        }
        else
        {
            // 获取枚举常数名称。
            string name = Enum.GetName(enumType, value);
            if (name != null)
            {
                // 获取枚举字段。
                FieldInfo fieldInfo = enumType.GetField(name);
                if (fieldInfo != null)
                {
                    // 获取描述的属性。
                    attr = Attribute.GetCustomAttribute(fieldInfo,typeof(DescriptionAttribute), false) as DescriptionAttribute;
                }
            }
        }
 
        if (attr != null && !string.IsNullOrEmpty(attr.Description))
            return attr.Description;
        else
            return string.Empty;
 
    }
}

主程序调用如下所示:

MemberLevel gold = MemberLevel.gold;
Console.WriteLine(gold.GetDescription());
System.Console.Read();

到此这篇关于C#枚举类型(Enum)的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#中的枚举类型(Enum)介绍

本文链接: https://www.lsjlt.com/news/164153.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中的枚举类型(Enum)介绍
    枚举(Enum)定义 enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方...
    99+
    2022-11-13
  • C#枚举类型与位域枚举Enum
    一、概述 定义一个值类型,其中包含固定值集合。枚举类型变量可以是此集合中的任意一个或多个值。 枚举使用enum关键字来声明,与类同级。 枚举本身可以有修饰符,但枚举的成员始终是公共的...
    99+
    2022-11-13
  • c++枚举类型enum怎么使用
    在C++中,枚举类型(enum)用于定义一组具有离散值的常量。它可以用来提高代码的可读性和可维护性。以下是使用枚举类型的基本语法:`...
    99+
    2023-10-10
    c++
  • c语言枚举类型enum怎么用
    本文小编为大家详细介绍“c语言枚举类型enum怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c语言枚举类型enum怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、...
    99+
    2022-10-19
  • SpringBootEntity中枚举类型详细使用介绍
    目录简介方案对比枚举用法示例建表EntityEnumControllerServiceMapper测试1.正常操作2.前端传空字符串3.前端传null简介方案对比 本处列举表示类型或...
    99+
    2022-11-13
    SpringBoot Entity SpringBoot Entity枚举
  • mysql枚举类型enum的用法是什么
    MySQL的枚举类型(ENUM)是一种数据类型,用于定义一个可以从预定义的取值列表中选择的列。在创建表时,可以使用ENUM来定义列的...
    99+
    2023-08-21
    mysql
  • c语言枚举类型enum的用法及应用实例
    目录前言一、枚举的概念二、枚举的几种用法1.直接定义枚举值,然后给普通变量赋值。2.定义带名称的枚举三、定义枚举别名四、枚举有什么用,用在哪里?最后总结:前言 今天跟大家讲一下我在产...
    99+
    2022-11-12
  • 解读C++中枚举(enum)的使用
    目录前言一、枚举是什么二、使用步骤1.作用域2.隐式类型转换3.显式指定枚举值类型4.指定枚举值的值4.整形显式转换成枚举总结前言 对于开发C++来说,枚举是一个几乎必然用到的功能。...
    99+
    2023-03-06
    C++枚举使用 C++枚举 enum C++枚举
  • C#枚举类型的语法
    本篇内容主要讲解“C#枚举类型的语法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#枚举类型的语法”吧!C#枚举类型语法是什么呢?让我看看下面的讲解: usingSystem;&nb...
    99+
    2023-06-17
  • C#枚举类型的应用
    这篇文章主要讲解了“C#枚举类型的应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#枚举类型的应用”吧!C#枚举类型应用是怎么样的呢?首先我们来看看几个问题:◆C#枚举类型与基础类型的转...
    99+
    2023-06-17
  • C语言数据类型枚举enum全面详解示例教程
    目录一、枚举类型的定义二、枚举类型的使用2.1创建变量2.2一些优点总结一、枚举类型的定义 enum Day//enum Day是一种类型 { Mon,//周一到周日这些叫枚举...
    99+
    2022-11-12
  • Java中枚举类enum的values()方法的详解
    Java中枚举类enum的values()方法的详解 简介: 枚举中的一个特殊方法,values(), 在Enum 的 API 文档中也找不到这个方法,当点击values()时,也会跳到本类上。 此方法可以理解为:将枚举类转变为一个枚举类型...
    99+
    2023-08-18
    java 开发语言 jvm
  • C++11中强类型枚举的使用
    目录1.C/C++98中的枚举的缺陷2.强类型枚举的使用1.C/C++98中的枚举的缺陷 枚举在C语言中是狠古老的类型,它分为匿名枚举和具名枚举,如果是匿名枚举,那么它的用法只有一种...
    99+
    2023-02-02
    C++11 强类型枚举
  • C#枚举类型的基础知识
    这篇文章主要讲解了“C#枚举类型的基础知识”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#枚举类型的基础知识”吧!C#枚举示例:enum WeekDay  S...
    99+
    2023-06-18
  • C#枚举类型的基础讲解
    本篇内容主要讲解“C#枚举类型的基础讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#枚举类型的基础讲解”吧!对于C#枚举类型不仅可以提高程序的可读性,而且可以减少因底层值发生改变而导致的程...
    99+
    2023-06-18
  • C#枚举类型的实例分析
    本篇内容主要讲解“C#枚举类型的实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#枚举类型的实例分析”吧!C#枚举类型实例是你学习C#枚举类型的捷径,那让我们开始吧:public&nbs...
    99+
    2023-06-17
  • C++的枚举类型怎么定义
    这篇文章主要介绍了C++的枚举类型怎么定义的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的枚举类型怎么定义文章都会有所收获,下面我们一起来看看吧。C++枚举类型enum表示枚举,通常用于定义个新类型的字符...
    99+
    2023-06-27
  • C#枚举类型的概念及应用
    这篇文章主要讲解了“C#枚举类型的概念及应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#枚举类型的概念及应用”吧!C#枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一...
    99+
    2023-06-17
  • C# 枚举类型的声明和使用
    目录前言相关介绍一、枚举声明二、声明位置三、枚举使用总结前言 学习记录下枚举的声明和使用,枚举可用来规范开发 文章中代码的项目名为Project1,C#类名为Class1 相关介...
    99+
    2022-11-12
  • javascript中的枚举算法实例介绍
    本篇内容介绍了“javascript中的枚举算法实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!ja...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作