假设exp.Row.IsdeliveryDateNull()返回True。
具有以下代码:
Dim theDate As Date?
If exp.Row.IsdeliveryDateNull() Then
theDate = Nothing
Else
theDate = exp.Row.deliveryDate
End If
' Result: theDate = Nothing
theDate = If(exp.Row.IsdeliveryDateNull(), Nothing, exp.Row.deliveryDate)
' Result: theDate = is #1/1/0001 12:00:00 AM# (Default value of Date)
theDate 为什么会根据if(常规或内联)的类型获得不同的值?
我原本以两种方式期待theDate = Nothing
。
答案 0 :(得分:1)
If
运算符将永远不会将Nothing
解释为可为空的值类型,除非其他可能的返回类型也为可为空的值类型。如果值是常规值类型,则Nothing
将始终被解释为该类型的默认值。为了使If
的返回类型为Date?
,那么至少一个可能的返回值实际上必须明确为Date?
:
theDate = If(exp.Row.IsdeliveryDateNull(), Nothing, New Date?(exp.Row.deliveryDate))
或:
theDate = If(exp.Row.IsdeliveryDateNull(), DirectCast(Nothing, Date?), exp.Row.deliveryDate)