次の方法で共有


AndAlso 演算子 (Visual Basic)

2 つの式に対して短絡論理結合を実行します。

構文

result = expression1 AndAlso expression2  

部品

任期 定義
result 必須。 任意の Boolean 式。 結果は、2 つの式の比較の Boolean 結果です。
expression1 必須。 任意の Boolean 式。
expression2 必須。 任意の Boolean 式。

注釈

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

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

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

ブール比較では、 And 演算子は常に両方の式を評価します。これにはプロシージャ呼び出しを含めることができます。 AndAlso 演算子ショートサーキットを実行します。つまり、expression1Falseされている場合、expression2は評価されません。

データ型

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

オーバーロード

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

例 1

次の例では、 AndAlso 演算子を使用して、2 つの式に対して論理結合を実行します。 結果は、結合された式全体が true かどうかを表す Boolean 値になります。 最初の式が False場合、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 AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b

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

例 2

次の例は、配列の要素間で特定の値を検索する Function プロシージャを示しています。 配列が空の場合、または配列の長さを超えた場合、 While ステートメントは、検索値に対して配列要素をテストしません。

Public Function findValue(ByVal arr() As Double, 
    ByVal searchValue As Double) As Double
    Dim i As Integer = 0
    While i <= UBound(arr) AndAlso arr(i) <> searchValue
        ' If i is greater than UBound(arr), searchValue is not checked.
        i += 1
    End While
    If i > UBound(arr) Then i = -1
    Return i
End Function

こちらも参照ください