Nullable DateTime是否正常工作?

请检查以下代码

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

它返回String.Empty

这是对的吗?

可能是在第二行代码中引发exception会更好

是的,这是对的。 从文档中

如果HasValue属性为true,则为当前Nullable对象的值的文本表示forms;如果HasValue属性为false,则为空字符串( "" )。

另请注意, Nullable.EqualsNullable.GetHashCode不会抛出这种情况,但Nullable.GetType 抛出。 这是因为Nullable会覆盖Object.EqualsObject.GetHashCodeObject.ToString ,但是Object.GetType不会被覆盖(因为它不能被标记为virtual )。