AndAlso-operator (Visual Basic)
Utför logisk konjunktion med kort krets på två uttryck.
Syntax
result = expression1 AndAlso expression2
Delar
Period | Definition |
---|---|
result |
Obligatoriska. Alla Boolean uttryck. Resultatet är resultatet Boolean av jämförelsen av de två uttrycken. |
expression1 |
Obligatoriska. Alla Boolean uttryck. |
expression2 |
Obligatoriska. Alla Boolean uttryck. |
Kommentarer
En logisk åtgärd sägs vara kortslutning om den kompilerade koden kan kringgå utvärderingen av ett uttryck beroende på resultatet av ett annat uttryck. Om resultatet av det första uttrycket som utvärderas avgör det slutliga resultatet av åtgärden behöver du inte utvärdera det andra uttrycket eftersom det inte kan ändra slutresultatet. Kortslutning kan förbättra prestanda om det förbikopplade uttrycket är komplext eller om det omfattar proceduranrop.
Om båda uttrycken utvärderas till True
, result
är True
. I följande tabell visas hur result
bestäms.
Om expression1 är |
Och expression2 är |
Värdet för result är |
---|---|---|
True |
True |
True |
True |
False |
False |
False |
(utvärderas inte) | False |
Kommentar
I en boolesk jämförelse utvärderar operatorn And
alltid båda uttrycken, vilket kan innefatta att göra proceduranrop. AndAlso-operatorn utför kortslutning, vilket innebär att om expression1
är False
expression2
, utvärderas inte.
Datatyper
Operatorn AndAlso
definieras endast för den booleska datatypen. Visual Basic konverterar varje operand efter behov till Boolean
innan uttrycket utvärderas. Om du tilldelar resultatet till en numerisk typ konverterar Visual Basic det från Boolean
till den typen som False
blir 0
och True
blir -1
.
Mer information finns i Booleska typkonverteringar.
Överbelastning
Operatorn Och och IsFalse-operatorn kan överbelastas, vilket innebär att en klass eller struktur kan omdefiniera sitt beteende när en operande har den typen av klass eller struktur. Överlagring av operatorerna And
och IsFalse
påverkar operatorns AndAlso
beteende. Om koden används AndAlso
i en klass eller struktur som överbelastar And
och IsFalse
ska du se till att du förstår deras omdefinierade beteende. Mer information finns i Operatorprocedurer.
Exempel 1
I följande exempel används operatorn AndAlso
för att utföra en logisk konjunktion på två uttryck. Resultatet är ett Boolean
värde som representerar om hela det sammanslutna uttrycket är sant. Om det första uttrycket är False
utvärderas inte det andra.
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
Föregående exempel ger resultat av True
, False
respektive False
. I beräkningen av secondCheck
utvärderas inte det andra uttrycket eftersom det första redan False
är . Det andra uttrycket utvärderas dock i beräkningen av thirdCheck
.
Exempel 2
I följande exempel visas en Function
procedur som söker efter ett givet värde bland elementen i en matris. Om matrisen är tom, eller om matrisens längd har överskridits, testar instruktionen While
inte matriselementet mot sökvärdet.
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