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