If 演算子の型判定
戻り値が Double? のとき
If IsHoge Then Return 5.0 End If Return Nothing
と
Return If(IsHoge, 5.0, Nothing)
では、IsHoge = False の時
- 前者 Nullable(Of T).HasValue = False
- 後者 Nullable(Of T).HasValue = True (.Value = 0.0)
という挙動の違いが見られた。 If 演算子で Nothing が Double のデフォルトとして評価され、実質
Return If(IsHoge, 5.0, 0.0)
になってしまっている。戻り値の型に対して If 演算子の戻り値がうまいこと評価されるわけではない。
この場合で If 演算子を使うときは
Return If(IsHoge, 5.0, New Double?())
とする。