Delen via


AndAlso-operator (Visual Basic)

Hiermee worden logische combinaties van kortsluiting uitgevoerd op twee expressies.

Syntaxis

result = expression1 AndAlso expression2  

generator

Term Definitie
result Vereist. Elke Boolean expressie. Het resultaat is het resultaat van de Boolean vergelijking van de twee expressies.
expression1 Vereist. Elke Boolean expressie.
expression2 Vereist. Elke Boolean expressie.

Opmerkingen

Een logische bewerking wordt geacht kortsluiting te zijn als de gecompileerde code de evaluatie van één expressie kan omzeilen, afhankelijk van het resultaat van een andere expressie. Als het resultaat van de eerste expressie die is geëvalueerd het uiteindelijke resultaat van de bewerking bepaalt, hoeft u de tweede expressie niet te evalueren, omdat het uiteindelijke resultaat niet kan worden gewijzigd. Kortsluiting kan de prestaties verbeteren als de omzeilde expressie complex is of als het procedure-aanroepen omvat.

Als beide expressies worden geëvalueerd True, result is Truedit . In de volgende tabel ziet u hoe result dit wordt bepaald.

Als expression1 is En expression2 is De waarde van result is
True True True
True False False
False (niet geëvalueerd) False

Notitie

In een Booleaanse vergelijking evalueert de And operator altijd beide expressies, waaronder het maken van procedureaanroepen. De AndAlso-operator voert kortsluiting uit, wat betekent dat als expression1 dat het isFalse, dan expression2 niet wordt geëvalueerd.

Gegevenstypen

De AndAlso operator is alleen gedefinieerd voor het Booleaanse gegevenstype. Visual Basic converteert elke operand naar behoefte voordat Boolean de expressie wordt geëvalueerd. Als u het resultaat toewijst aan een numeriek type, converteert Visual Basic het van Boolean naar dat type, zodat het False wordt 0 en True wordt -1. Zie Booleaanse typeconversies voor meer informatie.

Overbelasting

De operator And en de IsFalse-operator kunnen overbelast worden, wat betekent dat een klasse of structuur hun gedrag kan herdefinieren wanneer een operand het type van die klasse of structuur heeft. Het overbelasten van de And operator en IsFalse operators is van invloed op het gedrag van de AndAlso operator. Als uw code gebruikmaakt van AndAlso een klasse of structuur die overbelast raakt And , moet IsFalseu het opnieuw gedefinieerde gedrag begrijpen. Zie Operator Procedures voor meer informatie.

Voorbeeld 1

In het volgende voorbeeld wordt de AndAlso operator gebruikt om een logische combinatie uit te voeren op twee expressies. Het resultaat is een Boolean waarde die aangeeft of de volledige samengevoegde expressie waar is. Als de eerste expressie is False, wordt de tweede niet geëvalueerd.

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

In het voorgaande voorbeeld worden de resultaten van Truerespectievelijk , Falseen False, geproduceerd. In de berekening van secondCheckwordt de tweede expressie niet geëvalueerd omdat de eerste al Falseis. De tweede expressie wordt echter geëvalueerd in de berekening van thirdCheck.

Voorbeeld 2

In het volgende voorbeeld ziet u een Function procedure waarmee wordt gezocht naar een bepaalde waarde tussen de elementen van een matrix. Als de matrix leeg is of als de lengte van de matrix is overschreden, While wordt het matrixelement niet getest op basis van de zoekwaarde.

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

Zie ook