Antworten:
DateTime ist ein Werttyp ( struct)
Dies bedeutet, dass Folgendes eine Kopie erstellt:
DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;
Sie können auch sicher Dinge tun wie:
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());
}
}
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-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;
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.
DateTime ist ein Werttyp. Jedes Mal, wenn Sie ihn einer neuen Variablen zuweisen, klonen Sie ihn.
DateTime foo = DateTime.Now;
DateTime clone = foo;
DateTime, es ist unveränderlich.