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群

    一群用代码改变世界的

  • 相关阅读:
    Ubuntu安装搜狗输入法
    Ubuntu 命令
    ubuntu忽然不能登录,输入密码正确一直返回登录界面
    chmod用法
    Maven学习(六)maven使用中遇到的坑
    win10下装mysql-5.7.18-winx64
    Maven学习(五)使用Maven构建多模块项目
    Maven学习(四)eclipse创建maven项目
    Maven学习(三)maven原理概念详述
    Struts2+Hibernate4+Spring4框架整合搭建Java项目原型
  • 原文地址:https://www.cnblogs.com/ydcnblog/p/9258378.html
Copyright © 2011-2022 走看看