Comment puis-je cloner un objet DateTime en C #?
DateTime est un type de valeur (struct
)
Cela signifie que ce qui suit crée une copie:
DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;
Vous pouvez également faire des choses comme:
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());
}
}
Notez comment dans le dernier exemple myDateTime
est déclaré à nouveau dans chaque cycle; si dateReference
avait été affectée par AddHours()
ou AddMinutes()
, myDateTime
se serait égaré très rapidement - mais ce n'est pas le cas, car dateReference
reste sur place:
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
var original = new DateTime(2010, 11, 24);
var clone = original;
DateTime
est un type de valeur, donc lorsque vous l'affectez, vous le clonez également. Cela dit, il est inutile de le cloner car il est immuable; en règle générale, vous ne clonez quelque chose que si vous avez l'intention de modifier l'une des copies.
DateTime est un type de valeur, donc chaque fois que vous l'assignez à une nouvelle variable, vous clonez.
DateTime foo = DateTime.Now;
DateTime clone = foo;