web-dev-qa-db-fra.com

Comment puis-je cloner un objet DateTime en C #?

Comment puis-je cloner un objet DateTime en C #?

80
Iain

DateTime est un type de valeur (struct)

Cela signifie que ce qui suit crée une copie:

DateTime toBeClonedDateTime = DateTime.Now;
DateTime cloned = toBeClonedDateTime;

Vous pouvez également faire des choses comme:

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());
  }
}

Notez comment dans le dernier exemple myDateTime est déclaré à nouveau dans chaque cycle; si dateReference avait été affectée par AddHours() ou AddMinutes(), myDateTime se serait égaré très rapidement - mais ce n'est pas le cas, car dateReference reste sur place:

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
182
Pieter van Ginkel
var original = new DateTime(2010, 11, 24);
var clone = original;

DateTime est un type de valeur, donc lorsque vous l'affectez, vous le clonez également. Cela dit, il est inutile de le cloner car il est immuable; en règle générale, vous ne clonez quelque chose que si vous avez l'intention de modifier l'une des copies.

22
Greg Beech

DateTime est un type de valeur, donc chaque fois que vous l'assignez à une nouvelle variable, vous clonez.

DateTime foo = DateTime.Now;
DateTime clone = foo;
10
Darin Dimitrov