带有flags属性的枚举

use*_*173 4 .net c#

我有枚举:

    [Flags, Serializable,]
    public enum WeekDays {
        Sunday = 1,
        Monday = 2,
        Tuesday = 4,
        Wednesday = 8,
        Thursday = 16,
        Friday = 32,
        Saturday = 64,
        WeekendDays = Sunday | Saturday,
        WorkDays = Monday | Tuesday | Wednesday | Thursday | Friday,
        EveryDay = WeekendDays | WorkDays
    }
Run Code Online (Sandbox Code Playgroud)

而且,我WeekDays在一个包含WeekDays枚举值的类中有属性:

public int WeekDays {get; set;}
Run Code Online (Sandbox Code Playgroud)

例如,WorkDays包含62(从星期一到星期五).
如何检查当前WeekDays属性是否包含当天?

Kir*_*huk 9

Enum具有HasFlag确定是否在当前实例中设置一个或多个位字段的方法.


Jon*_*Jon 6

使用按位运算符&查看值是否为集合的一部分:

var today = WeekDays.Thursday;
var workdays = WeekDays.WorkDays;

if((today & workdays) == today) {
    // today is a workday
}

if((today & WeekDays.Friday) == today) {
    // it's friday
}
Run Code Online (Sandbox Code Playgroud)