Ответ 1
Вам нужно использовать:
for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
{
Когда вы вызываете d.AddDays
, он возвращает новое значение DateTime, не изменяя тот, который вы уже создали.
Я пытаюсь использовать for
для DateTime
следующим образом:
for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d.AddDays(1))
{
// ...
}
Но проблема в том, что d
не увеличивается. Кто-нибудь имеет представление о том, что проблема?
Вам нужно использовать:
for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
{
Когда вы вызываете d.AddDays
, он возвращает новое значение DateTime, не изменяя тот, который вы уже создали.
d.AddDays(1) фактически не добавляет день к d. Он возвращает новый объект datetime на 1 день больше, чем d.
Эта проблема описана здесь: https://stackoverflow.com/questions/380819/common-programming-mistakes-for-net-developers-to-avoid/1213588#1213588
Возвращает новое значение DateTime, которое добавляет указанное количество дней к значение этого экземпляра.
Этот метод не изменяет значение этого DateTime. Вместо этого возвращает новый DateTime, значение которого является результатом этой операции.
Итак... Это должно быть как ниже
for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
Или, альтернативно,
d += TimeSpan.FromDays(1);