2010-03-22 3 views
2

Это тот случай. Я получаю дату от управления DatePicker:Значение Nullable datetime from DatePicker

DateTime current = datePicker1.SelectedDate;

И я получаю сообщение об ошибке: Невозможно неявно конвертировать DateTime? to DateTime. Так что, я думаю, это до NULL-типа DateTime ?.

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

if (datePicker1.SelectedDate == null) 
    current= DateTime.Now; 
else 
    current= (DateTime)datePicker1.SelectedDate; //or datePicker1.SelectedDate.Value 

И вообще, когда это безопасно неявно NULLABLE значения, а когда нет?

ответ

4

Ненужные типы имеют особое свойство для такого рода мышления. Это HasValue и, кроме того, GetValueOrDefault. Так что вам действительно нужно

DateTimePicker1.SelectedDate.GetValueOrDefault(DateTime.Now); 

// or DateTime.MaxValue or whatever).

+0

За дополнительной информацией, также полезно – trnTash

+0

Спасибо большое luckeyluke. :) – IsmailS

0

Вам не нужно отбрасывать, следующий

if (datePicker1.SelectedDate == null) 
    current= DateTime.Now; 
else 
    current= datePicker1.SelectedDate.Value; 

должен сделать

+0

в соответствии с MSND, datePicker1.SelectedDate.Value совпадает с (DateTime) datePicker1.SelectedDate. Оба они относятся к явным преобразованиям – trnTash

0

Как о

DateTime current = datePicker1.SelectedDate ?? DateTime.Now; 

?

4

В этом случае вы должны использовать null coalescing operator:

current = datePicker1.SelectedDate ?? DateTime.Now; 

Это будет использовать SelectedDate, если это не нулевой, или DateTime.Now иначе. Тип выражения не имеет значения NULL, потому что последний операнд.

В общем, вы должны использовать Value свойство (или приведение к Ненулевому типу), если вы уверены в том, что значение не равно нуль в этой точке - так что, если она является нулевой, то он будет выбросить исключение. (Если вы уверены, что это неуместно, исключение является подходящим.) Довольно часто оператор null coalescing означает, что вам не нужно беспокоиться об этом.

+0

. спасибо за быстрый ответ! – trnTash

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