以日期为迭代器的For循环



我有以下循环:

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

调试时,我看到dateTime.AddDays(1)被执行,但没有更改dateTime。有什么可预测的原因吗?

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

你也许可以使用:

dateTime = dateTime.AddDays(1)

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

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

AddDate返回添加日期的新DateTime。你必须把它改成这个
for (DateTime dateTime = FromDate; dateTime.CompareTo(ToDate) < 1; dateTime = dateTime.AddDays(1)) { .. }

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

来自msdn文档:

此方法不会更改值的日期时间。相反,它返回新的DateTime,其值为此操作的结果。

相关内容

  • 没有找到相关文章

最新更新