代码之家  ›  专栏  ›  技术社区  ›  Iain

如何在C中克隆日期时间对象?

  •  78
  • Iain  · 技术社区  · 14 年前

    如何在C中克隆日期时间对象?

    3 回复  |  直到 6 年前
        1
  •  176
  •   Bogdan Stăncescu    6 年前

    日期时间是值类型 ( 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() , 我的日期时间 会很快消失,但不会,因为 日期参考 停留时间:

    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
    
        2
  •  21
  •   Greg Beech    14 年前
    var original = new DateTime(2010, 11, 24);
    var clone = original;
    

    DateTime 是一个值类型,因此当您分配它时,也会克隆它。也就是说,克隆是没有意义的,因为它是不可变的;通常情况下,只有当您打算更改其中一个副本时,才克隆某个内容。

        3
  •  9
  •   Darin Dimitrov    14 年前

    datetime是一个值类型,因此每次将其分配给要克隆的新变量时。

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