zoukankan      html  css  js  c++  java
  • 枚举的使用方法

    枚举类型在程序开发中是一个非常好用的数据类型,一般用来描述一个审核节点,类型,条件分支是极好的。

    我总结枚举类型的使用一般有以下优点:

    1. 结构表达清晰

    2. 编写条件分支判断不易出错

    3. 存储数据空间占用小

    1. 定义枚举

    byte类型的赋值范围是0~255,对于枚举类型够用了,如果您需要取负值,可以继承int

    2. 枚举的使用

     

    3. 获取枚举的Description

    public static string GetEnumDescription(this Enum en)
    {
         if (en == null) { return string.Empty; }
           Type type = en.GetType();
           MemberInfo[] memInfo = type.GetMember(en.ToString());
            if (memInfo != null && memInfo.Length > 0)
            {
                object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
                if (attrs != null && attrs.Length > 0)
                   return ((DescriptionAttribute)attrs[0]).Description;
            }
            return en.ToString();
    }
    

    4. 获取枚举类型详细

    /// <summary>
    /// 获取枚举详细
    /// </summary>
    /// <returns></returns>
    public static List<EnumDto> GetEnumDescriptions<T>()
    {
        List<EnumDto> enumDescriptons = new List<EnumDto>();
        if (!typeof(T).IsEnum) throw new Exception("T不是一个枚举类型");
        foreach (var value in Enum.GetValues(typeof(T)))
        {
              object[] objAttrs = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
              string description = "";
              if (objAttrs != null && objAttrs.Length > 0)
              {
                   DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute;
                   description = descAttr.Description;
              }
              enumDescriptons.Add(new EnumDto()
              {
                   Name = value.ToString(),
                   Value = Convert.ToInt32(value),
                   Description = description
              });
    
         }
         return enumDescriptons;
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WoT.Infrastructure.Helper
    {
        /// <summary>
        /// 枚举类型的详细
        /// Author:Jacky
        /// </summary>
        [DataContract]
        public class EnumDto
        {
            /// <summary>
            /// 枚举名
            /// </summary>
            [DataMember]
            public string Name { get; set; }
    
            /// <summary>
            /// 枚举值
            /// </summary>
            [DataMember]
            public int Value { get; set; }
    
            /// <summary>
            /// 枚举说明
            /// </summary>
            [DataMember]
            public string Description { get; set; }
    
        }
    }
    EnumDto类

    PS:扫描下方二维码或点击链接,加入QQ群

    一群用代码改变世界的

  • 相关阅读:
    C#实现带阴历显示的日期代码
    ASP.NET实现支付宝接口功能
    网站添加手机短信功能
    ASP.NET支付宝扫码即时到账支付开发流程(序言)
    ASP.NET支付宝扫码即时到账支付开发流程(下)
    ASP.NET支付宝扫码即时到账支付开发流程(上)
    如何把自己写的程序加入到开机启动项(Windows)
    C#操作注册表
    重温SQL——行转列,列转行
    Unity Hub破解
  • 原文地址:https://www.cnblogs.com/ydcnblog/p/9258378.html
Copyright © 2011-2022 走看看