Nullable.Value
和(<whatEverType>) Nullable
之间是否有区别?据我所知,如果没有设置值或值本身,两个方法都返回NULL。cast空值为ValueType
e.g:
DateTime? date = DateTime.Now;
DateTime now = (DateTime) date;
DateTime now2 = date.Value;
Nullable.Value
和(<whatEverType>) Nullable
之间是否有区别?据我所知,如果没有设置值或值本身,两个方法都返回NULL。cast空值为ValueType
e.g:
DateTime? date = DateTime.Now;
DateTime now = (DateTime) date;
DateTime now2 = date.Value;
不,没有什么区别。在没有设置数值的情况下,您将在两种情况下获得InvalidOperationException
。 更重要的是,这里是内部Nullable<T>
实现转型操作的:
public static explicit operator T(Nullable<T> value) {
return value.Value;
}
(与ReSharper的反编译)
所以投操作员使用Value
成员。
Aaaah,谢谢你的回答......我错过了未设置值时引发的异常。 – HimBromBeere 2014-09-26 10:16:40
不知道是由于内联还是巧妙,但编译器在两种情况下都获得了“Value”成员。 – IllidanS4 2014-11-04 01:01:13
@ IllidanS4我认为这是由于内联。 – 2014-11-04 07:23:29
你能提供编译代码吗? – 2014-09-26 10:10:07
“如果未设置值或值本身,两种方法都会返回NULL。”不。在未设置值的情况下,它会在两种情况下引发'InvalidOperationException'。 – 2014-09-26 10:11:59
_“据我所知,两种方法都返回NULL”_现在你已经提供了编译代码,为什么你没有验证这个语句? – 2014-09-26 10:14:59