我只是偶然发现了一些非常奇怪的可空变量:
'Normal case
Dim myNumber As Double? = Nothing
Dim hasValue As Boolean = myNumber.HasValue 'False as expected
'Weird case
Dim myNumber2 As Double? = If(True, Nothing, 42)
Dim hasValue2 As Boolean = myNumber2.HasValue 'True ?! (myNumber2 == 0)
为什么if在我的可以为空的Double中存储0而不是Nothing?
答案 0 :(得分:1)
If(True, Nothing, 42)
让你失望。对于IF
语句,两个结果都必须是相同的类型。由于Nothing
不是类型,因此VB会自动查看第二个结果并将Nothing
转换为双精度值,结果为0.0。