枚举编程​​问题

Ash*_*OoO 2 .net c# enums

我有一个代码

enum WeekDays
{
    Sat = 64,
    Sun = 1,     
    Mon = 2,
    Tue = 4,
    Wed = 8,
    Thu = 16,
    Fri = 32
    WorkDays = Sat | Sun | Mon | Tue | Wed 
}
Run Code Online (Sandbox Code Playgroud)

我想了解更多:

WorkDays = Sat | Sun | Mon | Tue | Wed 
Run Code Online (Sandbox Code Playgroud)

它的价值意味着什么?

Hen*_*man 8

你可能有一个[Flags]属性.

工作日创建为二进制或工作日值(不是我的工作日).

所以天数是手动编号,使它们的权力为2:

Sun  = 0000001
Mon  = 0000010
Tue  = 0000100
Wed  = 0001000
Sat  = 1000000
Run Code Online (Sandbox Code Playgroud)

等等

然后你可以使用二元运算符来执行Set操作:

MyWeekend = Sat | Sun;  // 1000000 | 0000001 = 1000001
Run Code Online (Sandbox Code Playgroud)

并使用二进制 - 并测试成员资格:

WeekDays d = ...;
if ((d & MyWeekend) != 0)
{
    // it's weekend !
}
Run Code Online (Sandbox Code Playgroud)