如何在C#中克隆DateTime对象?
Answers:
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
是值类型,因此当您分配它时,也会对其进行克隆。就是说,克隆它是没有意义的,因为它是不可变的。通常,如果您打算更改其中一个副本,则只会克隆某些内容。
DateTime是一种值类型,因此每次将其分配给新变量时,您都将进行克隆。
DateTime foo = DateTime.Now;
DateTime clone = foo;
DateTime
,它是不可变的。