【问题标题】:Date is not incrementing in WHILE or FOR loop日期在 WHILE 或 FOR 循环中不递增
【发布时间】:2016-04-21 18:12:02
【问题描述】:

以下代码有什么问题?日期在我的 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
}

【问题讨论】:

    标签: c# datetime for-loop while-loop


    【解决方案1】:

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

    应该是

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

    【讨论】:

    • 为了扩展它,它使用整数,因为 i++ 自动分配增量。
    【解决方案2】:

    来自documentation

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

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

    date = date.AddDays(1);

    【讨论】:

      猜你喜欢
      • 2013-09-21
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多