For-loop и DateTime Проблема - PullRequest
12 голосов
/ 30 августа 2011

Я пытаюсь использовать for на DateTime так:

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d.AddDays(1))
{
    // ...
}

Но проблема в том, что d не увеличивается. У кого-нибудь есть представление о том, в чем проблема?

Ответы [ 4 ]

21 голосов
/ 30 августа 2011

Вам необходимо использовать:

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
{

Когда вы звоните d.AddDays, он возвращает новый DateTime, а не изменяет тот, который вы уже создали.

7 голосов
/ 30 августа 2011

d.AddDays (1) фактически не добавляет день к d.Он возвращает новый объект даты-времени 1 день больше, чем d.

Эта проблема была задокументирована здесь: https://stackoverflow.com/questions/380819/common-programming-mistakes-for-net-developers-to-avoid/1213588#1213588

2 голосов
/ 30 августа 2011

Возвращает новый DateTime, который добавляет указанное количество дней к значению этого экземпляра.

Этот метод не изменяет значение этого DateTime.Вместо этого он возвращает новый DateTime, значение которого является результатом этой операции.

MSDN

Итак ... Это должно быть, как показано ниже

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d = d.AddDays(1))
1 голос
/ 30 августа 2011

Или альтернативно

d += TimeSpan.FromDays(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...