2013-12-02 2 views
2

я использовал AddDays(x) метод, прежде чем на DateTime объектов и она работает нормально, но теперь мой объект определяется следующим образом:Вызов AddDays на объекте Nullable DateTime

public DateTime? To_Date { get; set; } 

И похоже, это одна не имеет AddDays метод. Как я могу это назвать?

ответ

6

Поскольку DateTime? может быть в состоянии, представляющих null, вы должны рассмотреть, что делать, если это нуль.

Самое очевидное, что нужно сделать, чтобы остаться со значением null (на следующий день после null является null).

DateTime? later = ToDate.HasValue 
    ? To_Date.Value.AddDays(numberOfDays) 
    : (DateTime?)null; 

Это может быть, что есть некоторые значимые даты по умолчанию можно использовать, в этом случае:

DateTime later = (ToDate ?? defaultDate).AddDays(numberOfDays); 

Это будет использовать defaultDate когда ToDate не имеет значения, а значение ToDate иначе.

+0

Идеальное решение, спасибо, это помогло мне! –

2

Вам нужно сделать To_Date.Value.AddDays(1);

To_Date относится к обертке, которая имеет только несколько свойств. Один из них - это флаг, указывающий, является ли он нулевым, а другое - самим значением. Сначала проверьте, что это не null, попробуйте использовать значение AddDays.

+0

'InvalidOperationException', если' To_Date' на самом деле не имеет этого значения. –

+0

@JonHanna «Сначала проверьте, что это не null». Я объяснил, как работает «Nullable », я не думаю, что проверка нулевого кода в моем примере кода необходима. Хорошая работа, копия моего ответа, хотя! – evanmcdonnal

+0

Если вы собираетесь обвинить меня в плагиате, я уверен, что где-то там, где мой ответ на самом деле похож на другого. В то же время, поскольку OP не grokking, почему просто вызов '.AddDays()' не работает, то они не рассматривают возможность недействительности, поэтому стоит отметить, что делает мой комментарий. –

1

Попробуйте это:

To_Date.Value.AddDays(x); 
+2

'InvalidOperationException', если' To_Date' фактически не имеет этого значения. –

Смежные вопросы