Странная проблема .Net datetime - PullRequest
2 голосов
/ 28 января 2010

Установка с тройной

DateTime filterDate = endDate.HasValue ? endDate.Value : DateTime.Now.AddDays(7);

Не троичный

DateTime filterDate;
if (endDate.HasValue)
    filterDate = endDate.Value;
else
    filterDate = DateTime.Now.AddDays(7);

Если вы отлаживаете эти два оператора, значение filterDate не будет одинаковым. Почему это?

В первом примере filterDate заканчивается значением 01/01/0001. Во втором примере я получаю ожидаемый результат, который является filterDate - это дата и время в будущем на 7 дней.

EDIT: В этот момент я даже попытался установить endDate = null, просто чтобы убедиться, и вот скриншот того, что происходит. альтернативный текст http://www.freeimagehosting.net/uploads/57bef2e50a.png

Самая странная вещь, которую я когда-либо видел.

Ответы [ 2 ]

6 голосов
/ 28 января 2010

Похоже, что endDate инициализируется в DateTime.MinValue, вы можете показать код, в котором вы объявляете endDate?

Кроме того, еще более короткий путь:

DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);
5 голосов
/ 28 января 2010

Мне не удалось воспроизвести это. В любом случае это предпочтительный способ сделать это:

DateTime filterDate = endDate ?? DateTime.Now.AddDays(7);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...