zoukankan      html  css  js  c++  java
  • enum 枚举一般用法 dotnet

    public enum Demo 
    {
    [Description("Moning描述")]
    Moning = 0, 
    [Description("Afternoon描述")]
    Afternoon = 1, 
    [Description("Evening描述")]
    Evening = 2, 
    }

    枚举方法

    1、获取枚举字符串

    Demo time = Demo.Afternoon;

    Console.WriteLine(time.ToString());//输出:Afternoon

    2、Enum.Parse()方法。这个方法带3个参数,第一个参数是要使用的枚举类型。其语法是关键字typeof后跟放在括号中的枚举类名。typeof运算符将在第5章详细论述。第二个参数是要转换的字符串,第三个参数是一个bool,指定在进行转换时是否忽略大小写。最后,注意Enum.Parse()方法实际上返回一个对象引用——我们需要把这个字符串显式转换为需要的枚举类型(这是一个取消装箱操作的例子)。对于上面的代码,将返回1,作为一个对象,对应于Demo.Afternoon的枚举值。在显式转换为int时,会再次生成1。

    Demo time2 = (Demo) Enum.Parse(typeof(Demo), “afternoon”, true);

    Console.WriteLine((int)time2);//输出1

    Demo time3 = Enum.Parse<Demo>("1");

    Console.WriteLine((int)time3.Afternoon );//输出1

    3、得到枚举的某一值对应的名称

    var Text = Enum.GetName(typeof(Demo), 0);
    var Text = ((Demo)0).ToString();//返回:Morning

    两种方法都能实现,但是当其值越界(不是枚举所列出的值),就有一定的区别了。大家可以根据自己的需求不同,选择合适的方法。

    var Text = ((Demo)5).ToString(); //返回:5,如果越界返回原值

    this.lbGetName.Text = Enum.GetName(typeof(Demo), 5); //返回:空字符串,如果越界返回空字符串

    4、得到枚举的所有的值

    foreach (int i in Enum.GetValues(typeof(Demo)))
         Text += i.ToString();
    5、枚举所有的名称

    foreach(string temp in Enum.GetNames(typeof(Demo)))
         Text+=temp;
    6、枚举的Description值

        public static class EnumExtensions
        {
            public static string GetDescription(this Enum value)
            {
                return value.GetType()
                      .GetMember(value.ToString())
                      .FirstOrDefault()?
                      .GetCustomAttribute<DescriptionAttribute>()?
                      .Description;
            }
        }

    var  Text=Demo.Afternoon.GetDescription()

  • 相关阅读:
    PC上图标显示异常 白色框框处理方案
    判断Javascript变量是否为空 undefined 或者null(附样例)
    MySQL双版本共存解决方案
    跨境电商进口业务的通关模式
    史上最完整跨境电商投资分析报告!
    Fastcgi_Finish_Request 提高页面响应速度
    浏览器工作原理
    thinkphp 命名规范
    git diff ^M的消除
    git简明教程
  • 原文地址:https://www.cnblogs.com/asd14828/p/10109506.html
Copyright © 2011-2022 走看看