Как передать значение null в качестве значения DateTime? - PullRequest
1 голос
/ 29 марта 2010

В базе данных есть поле, в котором сохраняется дата закрытия. Эта дата может быть NOT NULL, только если дело было закрыто. Если дело не закрыто, оно должно быть NULL. Как я могу передать нулевое значение объекту DateTime?

Пробовал это, но это не работает.

DateTime closure= dateDatumIspisa.SelectedDate ?? null;
DateTime closure= dateDatumIspisa.SelectedDate ?? DateTime.Parse("");
DateTime closure= dateDatumIspisa.SelectedDate ?? DBNull.Value;
DateTime closure= dateDatumIspisa.SelectedDate ?? DateTime.Parse(DBNull.Value.ToString());

Также пробовал GetValueOrDefault (), но он вставляет значение DateTime.Min, а мне нужно, чтобы это поле оставалось пустым

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 29 марта 2010

Просто сделайте closure a DateTime? вместо DateTime. Весь смысл Nullable<T> состоит в том, чтобы сделать обнуляемый тип из необнуляемого.

Теперь вы не указали тип SelectedDate - но если это уже DateTime?, тогда вам вообще не нужно использовать ??. Просто:

DateTime? closure= dateDatumIspisa.SelectedDate;

Насколько хорошо вы знакомы с типами значений, которые можно обнулять? Возможно, вы захотите прочитать о MSDN покрытия их .

1 голос
/ 29 марта 2010

Объявить

DateTime ? closure = dateDatumIspisa.SelectedDate;

здесь нет необходимости использовать ?? в этой строке!

...