Dela via


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 Falseexpression2 , 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 IsFalseska 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 Falseutvä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, Falserespektive False. I beräkningen av secondCheckutvä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

Se även