如何在C#中克隆DateTime对象?

时间:2010-11-24 09:48:41

标签: c# datetime clone

如何在C#中克隆DateTime对象?

3 个答案:

答案 0 :(得分:177)

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如何在每个周期中重新声明;如果dateReferenceAddHours()AddMinutes()影响myDateTimedateReference会很快离开 - 但事实并非如此,因为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 仍然存在:

{{1}}

答案 1 :(得分:21)

var original = new DateTime(2010, 11, 24);
var clone = original;

DateTime是一种值类型,因此当您指定它时,您也可以克隆它。也就是说,克隆它是没有意义的,因为它是不可改变的;如果您打算更改其中一个副本,通常只会克隆一些内容。

答案 2 :(得分:9)

DateTime是一个值类型,因此每次将它分配给您正在克隆的新变量时。

DateTime foo = DateTime.Now;
DateTime clone = foo;