【问题标题】:For-loop and DateTime ProblemFor-loop 和 DateTime 问题
【发布时间】:2011-11-06 10:01:45
【问题描述】:

我正在尝试像这样在DateTime 上使用for

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

但问题是d 没有增加。有谁知道问题出在哪里?

【问题讨论】:

    标签: c# for-loop


    【解决方案1】:

    你需要使用:

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

    当您调用d.AddDays 时,它会返回一个新的 DateTime,而不是更改您已经创建的日期时间。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        MSDN

        所以...应该如下所示

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

        【讨论】:

          【解决方案4】:

          或者

          d += TimeSpan.FromDays(1);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多