1. ホーム
  2. vb.net

[解決済み] OrとOrElseの比較

2023-01-27 11:40:32

質問

とはどう違うのでしょうか? またはElse ?

if temp is dbnull.value or temp = 0

はエラーを生成します。

演算子 '=' は、型 'DBNull' および型 'Integer' に対して定義されていません。

これは魅力的なように動作している間!?

if temp is dbnull.value OrElse temp = 0

どのように解決するのですか?

OrElse 短絡的 演算子を使用しています。 Or はそうではない。

ブール演算子の定義によれば、最初の項が「真」であれば、全体は間違いなく「真」なので、2番目の項を評価する必要はないのです。

OrElse はこのことを知っているので、評価しようとせず temp = 0 が確立されると temp Is DBNull.Value

Or はこのことを知らないので、常に両方の項を評価しようとします。このとき temp Is DBNull.Value の場合、ゼロと比較することができないので、転倒してしまいます。

使うべきは...まあ、意味のあるほうを。