将员工可用性表示为按位运算



我正在为我的员工构建一个日程安排应用程序,我想为我的员工存储一周中的每一天(周日到周六(的可用性。每个员工都可以选择{可用,不可用,1stHalf,2ndHalf }作为他们每天的可用性。我认为枚举可以存储所有 7 天,而按位操作可以确定员工当天的可用性类型。这可能吗?

是的,你应该可以做这样的事情

public class Schedule
{
private int schedule;
public Schedule(Availability sunday, Availability monday, Availability tuesday, Availability wednesday, Availability thursday, Availability friday, Availability saturday)
{
this.schedule = sunday | monday << 2 | tuesday << 4 | wednesday << 6 | thursday << 8 | friday << 10 | saturday << 12;
}
public Availability Sunday
{
get
{
return (this.schedule & 3);
}
}
public Availability Monday
{
get
{
return (this.schedule >> 2) & 3;
}
}
public Availability Tuesday
{
get
{
return (this.schedule >> 4) & 3;
}
}
public Availability Wednesday
{
get
{
return (this.schedule >> 6) & 3;
}
}
}
public enum Availability
{
Available = 0,
NotAvailable = 1,
FirstHalf = 2,
SecondHalf = 3
}

我在星期三停下来,但希望你能看到使用的模式。您可以使用两个位来表示每一天。数字 3 是二进制中的"11"。这被位移到所需日期的正确位置,然后我们使用按位并获取当天的设置位。在我们移动位后,我们抓住了

右边。

最新更新