• .Net5


    枚举命名规则:

    1、 枚举以复数的形式命名 => 例如性别  public enum Genders { }

    2、状态 以Status结尾

    枚举的扩展方法:还有其他博文
    using System;
    using System.ComponentModel;
    using System.Reflection;
    
    namespace EnumDemo
    {
        /// <summary>
        /// 枚举扩展方法
        /// </summary>
        public static class EnumExtensions
        {
            /// <summary>
            /// 根据枚举int值获取枚举名称
            /// </summary>
            /// <typeparam name="T">枚举类型</typeparam>
            /// <param name="status">枚举值</param>
            /// <returns></returns>
            public static string GetEnumName<T>(this int status)
            {
                return Enum.GetName(typeof(T), status);
            }
    
    
            /// <summary>
            /// 获取枚举变量值的 Description 属性
            /// </summary>
            /// <param name="obj">枚举变量</param>
            /// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
            public static string GetDescription(this Enum obj)
            {
                return GetDescription(obj, false);
            }
    
            /// <summary>
            /// 获取枚举变量值的 Description 属性
            /// </summary>
            /// <param name="obj">枚举变量</param>
            /// <param name="isTop">是否改变为返回该类、枚举类型的头 Description 属性,而不是当前的属性或枚举变量值的 Description 属性</param>
            /// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
            public static string GetDescription(this Enum obj, bool isTop)
            {
                if (obj == null)
                {
                    return string.Empty;
                }
                Type enumType = obj.GetType();
                DescriptionAttribute dna;
                if (isTop)
                {
                    dna = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
                }
                else
                {
                    FieldInfo fi = enumType.GetField(System.Enum.GetName(enumType, obj));
                    dna = (DescriptionAttribute)Attribute.GetCustomAttribute(
                       fi, typeof(DescriptionAttribute));
                }
                if ((dna != null)
                    && (string.IsNullOrEmpty(dna.Description) == false))
                {
                    return dna.Description;
                }
                return obj.ToString();
            }
        }
    }
    

      

    枚举的举例验证:
    using System.ComponentModel;
    
    namespace EnumDemo
    {
        /// <summary>
        /// 枚举以复数的形式命名
        /// </summary>
        public enum Genders
        {
            /// <summary>
            /// 女人
            /// </summary>
            [Description("女人")]
            Woman = 0,
            /// <summary>
            /// 男人
            /// </summary>
            [Description("男人")]
            Man = 1,
            /// <summary>
            /// 未知
            /// </summary>
            [Description("未知")]
            Unknown = 2
        }
    }
    

      

    namespace EnumDemo
    {
        public class EmployeeInfo
        {
            public EmployeeInfo(int empId, string empName, Genders gender)
            {
                EmpId = empId;
                EmpName = empName;
                Gender = gender;
            }
    
            /// <summary>
            /// 编号
            /// </summary>
            public int EmpId { get; set; }
    
            /// <summary>
            /// 姓名
            /// </summary>
            public string EmpName { get; set; }
    
            /// <summary>
            /// 性别
            /// </summary>
            public Genders Gender { get; set; }
    
            /// <summary>
            /// 性别【汉化值】 此属性为只读get
            /// </summary>
            public string GenderName => Gender.GetDescription();
    
            public override string ToString()
            {
                return $"编号:{EmpId}-姓名:{EmpName}-性别:{Gender}-性别【汉化值】:{GenderName}";
            }
        }
    }
    

      

    using System;
    using System.Collections.Generic;
    
    namespace EnumDemo
    {
        class Program
        {
            /// <summary>
            /// 初始化职员信息
            /// </summary>
            /// <returns></returns>
            static IList<EmployeeInfo> CreateEmployeeInfos()
            {
                var employees = new List<EmployeeInfo>
                {
                    new EmployeeInfo(1, "张三", Genders.Man),
                    new EmployeeInfo(2, "李四", Genders.Woman),
                    new EmployeeInfo(3, "王五", Genders.Woman),
                    new EmployeeInfo(4, "陈大", Genders.Man),
                    new EmployeeInfo(5, "钱二", Genders.Unknown)
                };
                return employees;
            }
    
            static void Main(string[] args)
            {
                #region enum、int、string之间的相互转换
                Genders manValue = Genders.Man;// => Man
                //枚举转string
                string manStr = manValue.ToString();//效率低 => Man
                string manStr2 = Enum.GetName(typeof(Genders), manValue);// => Man
                //int转string
                int num = 0;
                string manStr5 = Enum.GetName(typeof(Genders), 0);// => Woman
                string manStr3 = num.GetEnumName<Genders>();// => Woman
                //枚举转int
                int number = (int)manValue;// => 1
                int number2 = manValue.GetHashCode();// => 1
                int number3 = Convert.ToInt32(manValue);// => 1
                //string转枚举
                Genders man = (Genders)Enum.Parse(typeof(Genders), "Man");// => Man
                Genders woman = (Genders)Enum.Parse(typeof(Genders), "0");// => Woman
                //string转int
                int number5 = Convert.ToInt32(Enum.Parse(typeof(Genders), "Man"));// => 1
                //int转枚举
                Genders man2 = (Genders)1;// => Man
                Genders woman2 = (Genders)Enum.ToObject(typeof(Genders), 0);// => Woman
                #endregion
    
                //返回查询数据展示枚举汉语字时
                var employees = CreateEmployeeInfos();
                foreach (var item in employees)
                {
                    Console.WriteLine(item.ToString());
                }
            }
        }
    }
    

      

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/gygtech/p/14364794.html
Copyright © 2020-2023  润新知