我正在为我的员工构建一个计划应用程序,我希望为周一至周六的每周的每一天存储员工的可用性。每位员工都可以选择{Available,Not Available,1stHalf,2ndHalf}来确保每天的可用性。我认为枚举可以存储所有7天,并且按位操作可以用于确定员工当天的可用性类型。这可能吗?
答案 0 :(得分:1)
是的,你可以做这样的事情
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”。这被移位到所需日期的正确位置,然后我们使用按位并获取当天的设置位。在我们移动位后,我们抓住了右边。