Hola gente!
No solo en tipos valor, vean que String tambien tiene ese patron. Es por decision de hacer los Strings inmutables, algo que viene, hmmm.... digamos desde los C++ Idioms de Coplien, se adopto en Java, y ahora lo tenemos en .NET. Nos leemos! Angel "Java" Lopez http://www.ajlopez.com http://twitter.com/ajlopez From: [email protected] [mailto:[email protected]] On Behalf Of Leonardo Micheloni Sent: Friday, February 06, 2009 2:27 PM To: [email protected] Subject: [puntonet] Bucle con Fechas OK, sí, digo una cuestión de diseño porque viendo el código de la estructura DateTime se podría haber incrementado su contador interno en le método Add para que se incremente a sí mismo, de todos modos no me había dado cuenta que pasa en todos los tipos por valor, buena info. saludos, Leonardo Micheloni. 2009/2/6 Gustavo Ringel <[email protected]> No hay nada raro, StringBuilder es reference type y DateTime es Value Type, y asi esta definido por Disenio en el Framework, Todos los values types ante cualquier accion crean una nueva copia en el stack, los reference types mantienen un puntero al heap el cual referencia al stack y esto es lo que cambia en el caso de un reference type Para informacion mas tecnica y detallada busquen c# reference type y value type y veran dibujos explicaciones mas extendidas. Abrazo. Gustavo. cuando haces date.AddDays() se crea en el stack una copia. Si fuera 2009/2/6 Leonardo Micheloni <[email protected]> Lo que pasa es que tu incremento dentro del bucle no está bien, hay un patrón que se repite por todo el framework que es algo raro, mirá, vos esperás (como es lógico) que el método Add de DateTime incremente la misma variable, pero no, devuelve un nuevo DateTime incrementado, o sea, tu código debería ser algo así: DateTime fechatermino = DateTime.Today.AddDays(1); for (DateTime fechainicio = DateTime.Today; fechainicio <= fechatermino; fechainicio = fechainicio.AddDays(1)) { Console.WriteLine(fechainicio); } Este extraño patrón está en varios lugares, pero no en todos, por el ejemplo StringBuilder se comporta de la manera lógica...en fin, cosas del diseño.. saludos, Leonardo Micheloni. 2009/2/6 Andres Guzman <[email protected]> Camaradas tengo una duda, como puedo hacer un bucle entre variables tipo DATETIME, o sea algo asi while(FECHAINICIO <= FECHATERMINO) { blablabla; FECHAINICIO.ADDDAYS(1); } o for(fechainicio; fechainicio<=fechatermino;fechainicio.adddays(1)) { blalbalablalalblba } Trato pero no puedo
