C#でDateTimeオブジェクトを複製するにはどうすればよいですか?
DateTimeは値型です(struct
)
これは、以下がコピーを作成することを意味します。
_DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;
_
次のようなことも安全に行うことができます。
_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());
}
}
_
最後の例でmyDateTime
が各サイクルで新たに宣言されることに注意してください。 dateReference
がAddHours()
またはAddMinutes()
の影響を受けていた場合、myDateTime
は非常に速くさまよいましたが、dateReference
は置かれたままです:
_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
は値型であるため、割り当てるときにクローンも作成します。とはいえ、不変なので、クローンを作成しても意味がありません。通常、コピーの1つを変更する意図がある場合にのみ、何かを複製します。
DateTimeは値型であるため、複製する新しい変数に割り当てるたびに。
DateTime foo = DateTime.Now;
DateTime clone = foo;