OrElse 演算子 (Visual Basic)
2 つの式の短絡包含的論理和を求めます。
構文
result = expression1 OrElse expression2
指定項目
result
必須です。 任意のブール型 ( Boolean
) の式を指定します。
expression1
必須です。 任意のブール型 ( Boolean
) の式を指定します。
expression2
必須です。 任意のブール型 ( Boolean
) の式を指定します。
Remarks
コンパイルされたコードが、ある式の評価を別の式の結果に応じてバイパスできる場合、論理演算は "短絡" であると言われます。 最初に評価された式の結果によって演算の最終結果が決まる場合、最終結果を変更できないため、2 番目の式を評価する必要はありません。 バイパスされた式が複雑な場合や、プロシージャ呼び出しが関係している場合に、短絡によってパフォーマンスを向上させることができます。
いずれかまたは両方の式が True
に評価される場合、result
は True
です。 次の表は、result
がどのように決定されるかを示しています。
expression1 が次の場合 |
かつ、expression2 が次の場合 |
result の値は次のようになります |
---|---|---|
True |
(評価されていない) | True |
False |
True |
True |
False |
False |
False |
データの種類
OrElse
演算子は Boolean データ型に対してのみ定義されます。 Visual Basic は、式を評価する前に、必要に応じて各オペランドを Boolean
に変換します。 結果を数値型に代入すると、Visual Basic によって Boolean
からその型への変換が行われ、False
が 0
になり、True
が -1
になります。
詳細については、ブール型変換に関する記事をご覧ください。
オーバーロード
Or 演算子と IsTrue 演算子は "オーバーロード" できます。つまり、オペランドがクラスまたは構造体の型を持っているときに、このクラスまたは構造体はその動作を再定義できます。 Or
と IsTrue
の演算子をオーバーロードすると、OrElse
演算子の動作に影響します。 コードで、Or
と IsTrue
をオーバーロードするクラスまたは構造体で OrElse
を使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。
例 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
前の例では、それぞれ True
、True
、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
関連項目
.NET