日期在 WHILE 或 FOR 循环中不递增

本文关键字:循环 FOR WHILE 日期 | 更新日期: 2024-10-30 03:43:17

下面的代码有什么问题?日期在我的 FOR 循环中没有递增,因此它会进入无限循环,因为条件永远不会满足。我也用 WHILE 循环尝试了一下,得到了相同的结果。

var startDate = DateTime.Today;
var endDate = new DateTime(2016, 12, 31);
for (var date = startDate; date <= endDate; date.AddDays(1))
{
   // Some logic here
}

日期在 WHILE 或 FOR 循环中不递增

AddDays 不会修改 date 的值,它只是返回DateTime的新实例,并且您不会重新分配递增的值。

它应该是

for (var date = startDate; date <= endDate; date = date.AddDays(1))

从文档中:

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

所以,date.AddDays(1)不会改变date的值;它返回一个新的DateTime来表示改变的值。 如果要更改date,请执行以下操作:

date = date.AddDays(1);