For循环和DateTime问题

时间:2011-08-29 23:23:11

标签: c# for-loop

我正试图在for上使用DateTime,如下所示:

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d.AddDays(1))
{
    // ...
}

但问题是d没有增加。有没有人知道问题是什么?

4 个答案:

答案 0 :(得分:21)

您需要使用:

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
{

当您致电d.AddDays时,它会返回 new DateTime,而不会更改您已创建的日期。

答案 1 :(得分:7)

d.AddDays(1)实际上并没有向d添加一天。它返回新的日期时间对象比d大1天。

此问题已在此处记录: https://stackoverflow.com/questions/380819/common-programming-mistakes-for-net-developers-to-avoid/1213588#1213588

答案 2 :(得分:2)

  

返回一个新的DateTime,它将指定的天数添加到   此实例的值。

     

此方法不会更改此DateTime的值。相反,它   返回一个新的DateTime,其值是此操作的结果。

MSDN

所以......应该如下

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))

答案 3 :(得分:1)

或者

d += TimeSpan.FromDays(1);