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 myDateTimeest déclaré à nouveau dans chaque cycle; si dateReferenceavait été affecté par AddHours()ou AddMinutes(), se myDateTimeserait éloigné très vite - mais ce n'est pas le cas, car dateReferencereste en place:
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;
DateTimeest un type valeur, donc lorsque vous l'affectez, vous le clonez également. Cela dit, il ne sert à rien de le cloner car il est immuable; en général, vous ne cloneriez quelque chose que si vous aviez l'intention de changer l'une des copies.
+1 D'accord. La façon dont j'ai contourné le problème était de créer un nouvel objet DateTime et de copier simplement les parties requises que je voulais cloner, telles que (jour, mois, année) à partir de l'objet datetime d'origine, puis définir l'heure manuellement pour le nouvel objet. .. par exemple.
Dal
12
DateTime est un type valeur, donc chaque fois que vous l'assignez à une nouvelle variable que vous clonez.
DateTime
, c'est immuable.Réponses:
DateTime est un type valeur (
struct
)Cela signifie que ce qui suit crée une copie:
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; sidateReference
avait été affecté parAddHours()
ouAddMinutes()
, semyDateTime
serait éloigné très vite - mais ce n'est pas le cas, cardateReference
reste en 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
la source
var original = new DateTime(2010, 11, 24); var clone = original;
DateTime
est un type valeur, donc lorsque vous l'affectez, vous le clonez également. Cela dit, il ne sert à rien de le cloner car il est immuable; en général, vous ne cloneriez quelque chose que si vous aviez l'intention de changer l'une des copies.la source
DateTime est un type valeur, donc chaque fois que vous l'assignez à une nouvelle variable que vous clonez.
la source