すもぎのめも

いろいろあったことをメモしています

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?())

とする。