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-290:00
Now at 2018-07-290:01
Now at 2018-07-290:02
Now at 2018-07-290:03
Now at 2018-07-290:04
Now at 2018-07-290:05
Now at 2018-07-290:06
Now at 2018-07-290:07
Now at 2018-07-290:08
Now at 2018-07-290:09
...
Now at 2018-07-2923:55
Now at 2018-07-2923:56
Now at 2018-07-2923:57
Now at 2018-07-2923:58
Now at 2018-07-2923:59
var original = new DateTime(2010, 11, 24);
var clone = original;
DateTime- это тип значения, поэтому, когда вы его назначаете, вы также клонируете его. Тем не менее, нет смысла клонировать его, потому что он неизменяемый; обычно вы клонируете что-то только в том случае, если намереваетесь изменить одну из копий.
+1 Согласен. Я решил проблему так, чтобы создать новый объект DateTime и просто скопировать необходимые части, которые я хотел клонировать, например (день, месяц, год) из исходного объекта datetime, а затем вручную установить время для нового объекта. .. Например.
Dal
12
DateTime - это тип значения, поэтому каждый раз, когда вы назначаете его новой переменной, которую вы клонируете.
DateTime
, это неизменяемо.Ответы:
DateTime - это тип значения (
struct
)Это означает, что следующее создает копию:
Вы также можете безопасно делать такие вещи, как:
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 - это тип значения, поэтому каждый раз, когда вы назначаете его новой переменной, которую вы клонируете.
источник