请检查以下代码
DateTime? tmp = new DateTime();
tmp = null;
return tmp.ToString();
返回String.Empty
。
这是对的吗?
可能最好在第二行代码中引发异常
答案 0 :(得分:18)
是的,这是对的。来自documentation
如果
Nullable<T>
属性为true,则为当前HasValue
对象的值的文本表示形式;如果""
属性为false,则为空字符串(HasValue
)的文本表示形式
另请注意,Nullable<T>.Equals
和Nullable<T>.GetHashCode
不会抛出此情况,但Nullable<T>.GetType
会抛出。这是因为Object.Equals
覆盖了Object.GetHashCode
,Object.ToString
和Nullable<T>
,但Object.GetType
未覆盖virtual
(因为它不能被标记为{ {1}})。