我有一个调度程序,允许用户选择允许其运行计划的一周中的哪几天。
我班上的属性包括一周中的每一天。
而不是使用if (Schedule[i].Sunday == true)
我怎么会这样:
if (Schedule[i].(DateTime.Now.DayOfWeek) == true)
答案 0 :(得分:1)
您可以在类中创建int DaysOfWeek
属性,该属性的位将根据星期几设置。让我们说0000001
- 星期日,0000010
- 星期一,0000011
- 星期日&星期一。我从星期日开始,因为DayOfWeek enum从星期日开始(http://referencesource.microsoft.com/#mscorlib/system/dayofweek.cs)。
然后您可以通过以下方式检查酒店:
if ((DaysOfWeek & (1 << (int)DateTime.Now.DayOfWeek)) != 0)
{
}
答案 1 :(得分:0)
您应该为Schedule使用多维数组;你的第一个索引是i
,你的第二个索引是一周中的整数。
然后将DayOfWeek
转换为整数:
if (Schedule[i][((int)DateTime.Now.DayOfWeek)] == true)
请注意,我使用DayOfWeek
作为第二个索引,而不是属性。这就是我之前提到使用多维数组的原因。
答案 2 :(得分:0)
将一周中的所有日期设为枚举,
[Flags]
Enum DaysOfWeek
{
None = 0,
Monday = 1 << 1,
Tuesday 1 << 2,
...
}
然后,您就可以使用days.HasFlag(DaysOfWeek.Monday);
来检查特定日期。
http://msdn.microsoft.com/en-us/library/system.enum.hasflag(v=vs.110).aspx
您还可以在switch语句中使用它们,以便每天执行不同的操作。
可悲的是,当前的C#system.dayofweek
的值为0到6 http://msdn.microsoft.com/en-us/library/system.dayofweek(v=vs.110).aspx,所以它不能与HasFlag
答案 3 :(得分:0)
很难说不知道你的日程安排的结构,但如果你在你的日程表中存储DayOfWeek
类型,你可以使用它:
Schedule[i].DayOfWeek == DateTime.Today.DayOfWeek;
您还可以从列表中获取计划项目列表,如此
var scheduledItems = schedule.Where(x=>x.DayOfWeek == DateTime.Today.DayOfWeek)