dtb верно, что DateTime
неизменна. Подумайте об этом так: DateTime
- это тип значения, который помещает его в ту же категорию, что и int
или double
. Экземпляры этих структур не могут быть изменены; их можно только оценить и скопировать.
Рассмотрим этот код:
int i = 4;
i + 2; // does not compile, but what if it did?
// would i become 6? clearly not --
// i + 2 expresses a NEW value, which can
// be copied somewhere
i = i + 2; // there we go -- that's better
Это аналогично:
DateTime d = DateTime.Now;
TimeSpan t = TimeSpan.FromDays(1.0);
d.Add(t); // compiles (because AddDays is a function),
// but is really the same as i + 2 above
d = d.Add(t); // that's better
Кстати, одна вещь, которая может помочь прояснить ситуацию, это осознать, что вышеприведенная строка, d = d.Add(t)
, совпадает с d = d + t
И вы не написали бы d + t
в отдельной строке, как если бы вы не написали i + 2
в отдельной строке.