如何使用.DayOfWeek的返回来检查类的属性

时间:2014-04-23 16:24:16

标签: c# datetime dayofweek

我有一个调度程序,允许用户选择允许其运行计划的一周中的哪几天。

我班上的属性包括一周中的每一天。

而不是使用if (Schedule[i].Sunday == true)

等7个参数

我怎么会这样:

if (Schedule[i].(DateTime.Now.DayOfWeek) == true)

4 个答案:

答案 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)