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 True
dit . 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 IsFalse
u 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 True
respectievelijk , False
en False
, geproduceerd. In de berekening van secondCheck
wordt de tweede expressie niet geëvalueerd omdat de eerste al False
is. 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