在For循环中使用DateTime,递增日期不起作用

Gal*_*len 21 c# asp.net datetime for-loop

我有这个循环,其目的是遍历一系列日期并执行一些逻辑来自动将条目添加到数据库中.问题是递增部分date.AddDays(1.0)不起作用,并且始终是相同的结果,导致无限循环.任何见解?

for (DateTime date = DateTime.Now; futureDate.CompareTo(date) > 0; date.AddDays(1.0))
{
    // logic here
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*son 62

DateTime.AddDays无需修改即返回新​​实例date.目前你正在丢弃这个新实例.相反,你需要做:

for (DateTime date = DateTime.Now; futureDate.CompareTo(date) > 0; date = date.AddDays(1.0))
{
    // logic here
}
Run Code Online (Sandbox Code Playgroud)

另外,我不知道为什么你在CompareTo使用<运营商时打电话.我不知道是否CompareTo(date) > 0在没有考虑它的情况下是否正确,而<操作员的意图是显而易见的:

for (DateTime date = DateTime.Now; date < futureDate; date = date.AddDays(1.0))
{
    // logic here
}
Run Code Online (Sandbox Code Playgroud)


Kir*_*oll 8

DateTime是不可变的.更改为:date = date.AddDays(1.0)