次の方法で共有


OrElse 演算子 (Visual Basic)

2 つの式に対して短絡包括論理和演算を実行します。

構文

result = expression1 OrElse expression2  

部品

result
必須。 任意の Boolean 式。

expression1
必須。 任意の Boolean 式。

expression2
必須。 任意の Boolean 式。

注釈

コンパイルされたコードが別の式の結果に応じて 1 つの式の評価をバイパスできる場合、論理演算は ショートサーキット と言われます。 評価された最初の式の結果によって操作の最終的な結果が決定される場合、最終的な結果を変更できないため、2 番目の式を評価する必要はありません。 省略すると、バイパスされた式が複雑な場合、またはプロシージャ呼び出しが含まれている場合に、パフォーマンスが向上する可能性があります。

いずれかの式または両方の式が Trueと評価された場合、 resultTrue。 次の表は、 result の決定方法を示しています。

expression1 expression2 resultの値は次の値です。
True (評価されません) True
False True True
False False False

データ型

OrElse演算子は、ブール型に対してのみ定義されます。 Visual Basic では、式を評価する前に、必要に応じて各オペランドを Boolean に変換します。 結果を数値型に割り当てると、False0になり、True-1になるように、結果がBooleanからその型に変換されます。 詳細については、「 ブール型変換」を参照してください。

オーバーロード

Or 演算子IsTrue 演算子オーバーロードできます。つまり、オペランドがそのクラスまたは構造体の型を持つ場合、クラスまたは構造体は動作を再定義できます。 Or演算子とIsTrue演算子をオーバーロードすると、OrElse演算子の動作に影響します。 コードで、OrIsTrueをオーバーロードするクラスまたは構造体でOrElseを使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 演算子プロシージャ」を参照してください。

例 1

次の例では、 OrElse 演算子を使用して、2 つの式に対して論理和演算を実行します。 結果は、2 つの式のいずれかが true かどうかを表す Boolean 値です。 最初の式が True場合、2 番目の式は評価されません。

Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b

前の例では、それぞれ TrueTrue、および False の結果が生成されます。 firstCheckの計算では、最初の式は既にTrueされているため、2 番目の式は評価されません。 ただし、2 番目の式は、 secondCheckの計算で評価されます。

例 2

次の例は、2 つのプロシージャ呼び出しを含む If...Then ステートメントを示しています。 最初の呼び出しで Trueが返された場合、2 番目のプロシージャは呼び出されません。 2 番目のプロシージャが、コードのこのセクションの実行時に常に実行する必要がある重要なタスクを実行すると、予期しない結果が発生する可能性があります。

If testFunction(5) = True OrElse otherFunction(4) = True Then
    ' If testFunction(5) is True, otherFunction(4) is not called.
    ' Insert code to be executed.
End If

こちらも参照ください