zoukankan      html  css  js  c++  java
  • 正确使用Enum的FlagsAttribute

    正确使用Enum的FlagsAttribute

    FlagsAttribute 标志枚举对象的值可以包括多个枚举成员,每个成员代表枚举值中的一个位域

    使用步骤

    1. 添加标记[Flags]
    2. 用 2 的幂(即 1、2、4、8 等)定义枚举常量,比如0,1,1<<1,1<<2,1<<3
    3. 标记[Flags]的枚举项之间可以进行NOT,OR,AND,XOR操作

    例子1

    [Flags]
    public enum DaysOfWeek
    {
        Sunday = 1,
        Monday = 1 << 1,
        Tuesday = 1 << 2,
        Wednesday = 1 << 3,
        Thursday = 1 << 4,
        Friday = 1 << 5,
        Saturday = 1 << 6,
    }
     var workDays1 = DaysOfWeek.Monday | DaysOfWeek.Tuesday |
    DaysOfWeek.Thursday | DaysOfWeek.Thursday | DaysOfWeek.Friday;
    var workDays2 = DaysOfWeek.Friday | DaysOfWeek.Saturday
    | DaysOfWeek.Sunday; ~workDays1
    //DaysOfWeek.Saturday,DaysOfWeek.Sunday workDays1 ^workDays2
    //DaysOfWeek.Monday, DaysOfWeek.Tuesday,DaysOfWeek.Thursday,
    //DaysOfWeek.Thursday,DaysOfWeek.Saturday, DaysOfWeek.Sunday workDays1&DaysOfWeek.Monday //DaysOfWeek.Monday

    例子2

    //判断是否包含某项
    
     //.net4.0新增
     if (workDays1.HasFlag(DaysOfWeek.Monday))
     { 
         //...
     }
    
     //4.0以前的版本
     if ((workDays1 & DaysOfWeek.Monday) == DaysOfWeek.Monday)
     { 
         //...
     }
    
  • 相关阅读:
    C语言程序设计II—第六周教学
    第一次结对编程情况反馈
    C语言程序设计II—第五周教学
    C语言程序设计II—第四周教学
    放缩
    切线垂直
    指数为对数时取对数
    整体运算
    数列求通项+离散数列单调性判断
    整体运算+求零点
  • 原文地址:https://www.cnblogs.com/Mercurius/p/enum_flagsattribute.html
Copyright © 2011-2022 走看看