从VB.NET到C#的DateTime.DayOfWeek翻译

时间:2014-04-17 06:56:11

标签: c# .net vb.net enums

我在这里有一个简单的vb.net代码片段:

While pStartDay.DayOfWeek <> 1
    pStartDay = pStartDay.AddDays(-1)
End While

While pEndDay.DayOfWeek <> 0
    pEndDay = pEndDay.AddDays(1)
End While

我想把它翻译成C#。

在vb.net中我可以将DayOfWeek与整数进行比较。 在c#中,这似乎是不可能的。

我只能将它与枚举本身进行比较。

例如:

        while (endDay.DayOfWeek != DayOfWeek.Sunday)
        {

        }

现在我不确定哪个DayOfWeek是0,哪个是1。 0可能是星期一或星期日。

1可能是星期一或星期二或其他什么..

任何人都可以帮助我并告诉我如何找出DayOfWeek的哪个枚举位置为0,哪个是哪个?

3 个答案:

答案 0 :(得分:5)

回答你问题的一部分:

  

现在我不确定哪个DayOfWeek是0,哪个是1 ...

来自the MSDN docs

  

...此枚举中常量的值范围为DayOfWeek.SundayDayOfWeek.Saturday。如果强制转换为整数,则其值的范围从零(表示DayOfWeek.Sunday)到六(表示DayOfWeek.Saturday)。

这就是开始使用枚举的重点。你应该坚持使用你展示的代码:

while (endDay.DayOfWeek != DayOfWeek.Sunday)

答案 1 :(得分:1)

您可以将枚举转换为整数来实现此目的。

 while ((int)pStartDay.DayOfWeek != 1)

 Console.WriteLine("Day 0 is: " + (DayOfWeek)0);

答案 2 :(得分:0)

试试这个:

while (pStartDay.DayOfWeek != 1) {
    pStartDay = pStartDay.AddDays(-1);
}

while (pEndDay.DayOfWeek != 0) {
    pEndDay = pEndDay.AddDays(1);
}