var dateReference =newDateTime(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());}}
Beachten Sie, wie im letzten Beispiel myDateTimein jedem Zyklus neu deklariert wird. Wenn ich dateReferencevon AddHours()oder betroffen gewesen wäre AddMinutes(), myDateTimewäre ich sehr schnell weggegangen - aber das tut es nicht, weil es so dateReferencebleibt:
Now at 2018-07-290:00Now at 2018-07-290:01Now at 2018-07-290:02Now at 2018-07-290:03Now at 2018-07-290:04Now at 2018-07-290:05Now at 2018-07-290:06Now at 2018-07-290:07Now at 2018-07-290:08Now at 2018-07-290:09...Now at 2018-07-2923:55Now at 2018-07-2923:56Now at 2018-07-2923:57Now at 2018-07-2923:58Now at 2018-07-2923:59
var original =newDateTime(2010,11,24);var clone = original;
DateTimeist ein Werttyp. Wenn Sie ihn also zuweisen, klonen Sie ihn auch. Das heißt, es macht keinen Sinn, es zu klonen, weil es unveränderlich ist; Normalerweise würden Sie etwas nur klonen, wenn Sie die Absicht hätten, eine der Kopien zu ändern.
+1 Einverstanden. Ich habe das Problem umgangen, indem ich ein neues DateTime-Objekt erstellt und einfach die erforderlichen Teile, die ich klonen wollte, wie (Tag, Monat, Jahr), aus dem ursprünglichen Datum / Uhrzeit-Objekt kopiert und dann die Zeit für das neue Objekt manuell festgelegt habe. .. als Beispiel.
Dal
11
DateTime ist ein Werttyp. Jedes Mal, wenn Sie ihn einer neuen Variablen zuweisen, klonen Sie ihn.
DateTime
, es ist unveränderlich.Antworten:
DateTime ist ein Werttyp (
struct
)Dies bedeutet, dass Folgendes eine Kopie erstellt:
Sie können auch sicher Dinge tun wie:
Beachten Sie, wie im letzten Beispiel
myDateTime
in jedem Zyklus neu deklariert wird. Wenn ichdateReference
vonAddHours()
oder betroffen gewesen wäreAddMinutes()
,myDateTime
wäre ich sehr schnell weggegangen - aber das tut es nicht, weil es sodateReference
bleibt:quelle
DateTime
ist ein Werttyp. Wenn Sie ihn also zuweisen, klonen Sie ihn auch. Das heißt, es macht keinen Sinn, es zu klonen, weil es unveränderlich ist; Normalerweise würden Sie etwas nur klonen, wenn Sie die Absicht hätten, eine der Kopien zu ändern.quelle
DateTime ist ein Werttyp. Jedes Mal, wenn Sie ihn einer neuen Variablen zuweisen, klonen Sie ihn.
quelle