Правильно ли работает функция Nullable DateTime?

Пожалуйста, проверьте следующий код

DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();

Он возвращает String.Empty.

Правильно ли это?

Может быть, лучше будет поднимать исключение во второй строке кода

Ответ 1

Да, это правильно. Из документа

Текстовое представление значения текущего объекта Nullable<T>, если свойство HasValue равно true или пустая строка (""), если свойство HasValue является ложным.

Обратите внимание также, что Nullable<T>.Equals и Nullable<T>.GetHashCode не выбрасывают в этом случае, а Nullable<T>.GetType выполняет команду throw. Это связано с тем, что Object.Equals, Object.GetHashCode и Object.ToString переопределены для Nullable<T>, но это Object.GetType не является (поскольку оно не может быть таким, как оно не помечено как virtual).