var dateReference = new DateTime(2018, 7, 29);
for (var h = 0; h < 24; h++) {
for (var m = 0; m < 60; m++) {
var myDateTime = dateReference.AddHours(h).AddMinutes(m);
Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString());
}
}
Observe cómo en el último ejemplo myDateTimese declara de nuevo en cada ciclo; si dateReferencehubiera sido afectado por AddHours()o AddMinutes(), myDateTimese hubiera alejado muy rápido, pero no es así, porque se dateReferencequeda quieto:
Now at 2018-07-290:00
Now at 2018-07-290:01
Now at 2018-07-290:02
Now at 2018-07-290:03
Now at 2018-07-290:04
Now at 2018-07-290:05
Now at 2018-07-290:06
Now at 2018-07-290:07
Now at 2018-07-290:08
Now at 2018-07-290:09
...
Now at 2018-07-2923:55
Now at 2018-07-2923:56
Now at 2018-07-2923:57
Now at 2018-07-2923:58
Now at 2018-07-2923:59
var original = new DateTime(2010, 11, 24);
var clone = original;
DateTimees un tipo de valor, por lo que cuando lo asigna, también lo clona. Dicho esto, no tiene sentido clonarlo porque es inmutable; normalmente, solo clonaría algo si tuviera la intención de cambiar una de las copias.
+1 de acuerdo. La forma en que solucioné el problema fue crear un nuevo objeto DateTime y simplemente copiar las partes requeridas que quería clonar, como (día, mes, año) del objeto datetime original y luego establecer la hora manualmente para el nuevo objeto. .. como ejemplo.
Dal
12
DateTime es un tipo de valor, por lo que cada vez que lo asigna a una nueva variable, está clonando.
DateTime
Es inmutable.Respuestas:
DateTime es un tipo de valor (
struct
)Esto significa que lo siguiente crea una copia:
También puede hacer cosas como:
var dateReference = new DateTime(2018, 7, 29); for (var h = 0; h < 24; h++) { for (var m = 0; m < 60; m++) { var myDateTime = dateReference.AddHours(h).AddMinutes(m); Console.WriteLine("Now at " + myDateTime.ToShortDateString() + " " + myDateTime.ToShortTimeString()); } }
Observe cómo en el último ejemplo
myDateTime
se declara de nuevo en cada ciclo; sidateReference
hubiera sido afectado porAddHours()
oAddMinutes()
,myDateTime
se hubiera alejado muy rápido, pero no es así, porque sedateReference
queda quieto:Now at 2018-07-29 0:00 Now at 2018-07-29 0:01 Now at 2018-07-29 0:02 Now at 2018-07-29 0:03 Now at 2018-07-29 0:04 Now at 2018-07-29 0:05 Now at 2018-07-29 0:06 Now at 2018-07-29 0:07 Now at 2018-07-29 0:08 Now at 2018-07-29 0:09 ... Now at 2018-07-29 23:55 Now at 2018-07-29 23:56 Now at 2018-07-29 23:57 Now at 2018-07-29 23:58 Now at 2018-07-29 23:59
fuente
var original = new DateTime(2010, 11, 24); var clone = original;
DateTime
es un tipo de valor, por lo que cuando lo asigna, también lo clona. Dicho esto, no tiene sentido clonarlo porque es inmutable; normalmente, solo clonaría algo si tuviera la intención de cambiar una de las copias.fuente
DateTime es un tipo de valor, por lo que cada vez que lo asigna a una nueva variable, está clonando.
fuente