2010-08-11 37 views
18

Tengo este ciclo, su propósito es recorrer un rango de fechas y realizar alguna lógica para automatizar la adición de entradas a la base de datos. El problema es que la porción de incremento, date.AddDays (1.0) no está funcionando, y siempre es el mismo resultado, lo que causa un ciclo infinito. ¿Alguna idea?Usar DateTime en un ciclo For, incrementar la fecha no funciona

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

Respuesta

55

DateTime.AddDays devuelve una nueva instancia sin modificar date. En este momento estás tirando esta nueva instancia. En su lugar, lo que necesita hacer:

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

Además, no estoy seguro de por qué está llamando CompareTo cuando se puede utilizar el operador <. No puedo decir si es correcto CompareTo(date) > 0 sin pensar en ello por un momento, mientras que la intención del operador < es obvia:

for (DateTime date = DateTime.Now; date < futureDate; date = date.AddDays(1.0)) 
{ 
    // logic here 
} 
7

DateTime es inmutable. Cambiar a: date = date.AddDays (1.0)

Cuestiones relacionadas