对于以日期为迭代器的循环

时间:2011-06-22 09:04:50

标签: .net datetime for-loop

我有以下for循环:

   for (DateTime dateTime = FromDate; dateTime.CompareTo(ToDate) < 1; dateTime.AddDays(1)) { .. }

调试时我看到dateTime.AddDays(1)已执行但不会更改dateTime。 任何可预测的原因?

5 个答案:

答案 0 :(得分:3)

AddDays返回日期 - 它不会更改现有值(它是不可变的)

您可以使用:

dateTime = dateTime.AddDays(1)

对于中期而言,您可能还会发现dateTime < ToDateCompareTo更容易阅读(一目了然)。

答案 1 :(得分:1)

AddDate返回添加日期的新DateTime。你必须把它改成这个

for (DateTime dateTime = FromDate; dateTime.CompareTo(ToDate) < 1; dateTime = dateTime.AddDays(1)) { .. }

答案 2 :(得分:1)

AddDays 方法会返回一个新日期,因此您应该这样:dateTime=dateTime.AddDays(1)

答案 3 :(得分:1)

dateTime.AddDays(1)不会更改dateTime的值。它将返回带有新数据的新对象。

答案 4 :(得分:0)

来自msdn documentation

  

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