zoukankan      html  css  js  c++  java
  • c#之枚举

    msdn中的解释:即一种由一组称为枚举数列表的命名常量组成的独特类型。

    声明一个简单的枚举,这个枚举规定了一周的每天

    public enum Days 
        { 
            Sun,Mon,Tue,Wed,Thu,Fri,Sat
        }

    如果未在枚举数列表中指定元素的值,则值将自动按 1 递增,默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1

             int x = (int)Days.Sun;
                int y = (int)Days.Thu;
                Console.WriteLine("Sun:{0}", x);
                Console.WriteLine("Thu:{0}", y);

    通过上面的例子我们可以得到sun的值是0,Thu的值是4

    当然我们也可以强制元素序列从 1 而不是 0 开始

    public enum Days 
        { 
            Sun=1,Mon,Tue,Wed,Thu,Fri,Sat
        }

    们可以得到sun的值是1,Thu的值是5

    每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型,枚举元素的默认基础类型为 int但是

    从 enum 类型到整型的转换需要用显式类型转换来完成

    int x = (int)Days.Sun;

    位标志 bit flag

    在枚举上应用[Flags]属性,就可以用枚举来表示一组可以组合的位标志,执行 AND、OR、NOT 和 XOR 按位运算,一般要定义一个值为0的None符号。

    [Flags]
    enum Days2
    {
        None = 0x0,
        Sunday = 0x1,
        Monday = 0x2,
        Tuesday = 0x4,
        Wednesday = 0x8,
        Thursday = 0x10,
        Friday = 0x20,
        Saturday = 0x40
    }
    Days2 meetingDays = Days2.Tuesday | Days2.Thursday;
        Console.WriteLine(meetingDays);

    image

    可见通过定义[Flags属性]的or运算就可以得到两种值

    不标记[Flag]

    image

    meetingDays = meetingDays ^ Days2.Tuesday;

    通过^操作可以去除枚举类型

    image

    若要确定是否设置了特定标志,使用按位 AND 运算

    bool test = (meetingDays & Days2.Thursday) == Days2.Thursday;
    Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not");

    System.Enum

    Enum.GetName:获取枚举类型中的名称
    string s = Enum.GetName(typeof(Days), 4);
    Console.WriteLine(s);
    image 
    Enum.GetValues:获取枚举对应的值
    foreach (int i in Enum.GetValues(typeof(Days)))
        Console.WriteLine(i);

    image

  • 相关阅读:
    能组成多少个无重复数字且不为5的倍数的五位数有多少个?
    http与https
    观察者模式和发布/订阅模式的区别
    快速排序的最优时间复杂度是 O(nlogn)
    函数实现 composeFunctions(fn1,fn2,fn3,fn4)等价于fn4(fn3(fn2(fn1))
    vue双向绑定代码实现
    node历史版本下载
    阻止scroll冒泡
    中断或取消Promise链的可行方案
    从输入url到页面加载完成发生了什么?——前端角度
  • 原文地址:https://www.cnblogs.com/ilooking/p/4142564.html
Copyright © 2011-2022 走看看