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 myDateTime
in jedem Zyklus neu deklariert wird. Wenn ich dateReference
von AddHours()
oder betroffen gewesen wäre AddMinutes()
, myDateTime
wäre ich sehr schnell weggegangen - aber das tut es nicht, weil es so dateReference
bleibt:
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
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.
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.