OrElse-operator (Visual Basic)
Utför kortslutande inkluderande logisk disjunction på två uttryck.
Syntax
result = expression1 OrElse expression2
Delar
result
Obligatoriska. Alla Boolean
uttryck.
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 antingen eller båda uttrycken utvärderas till True
är True
. result
I följande tabell visas hur result
bestäms.
Om expression1 är |
Och expression2 är |
Värdet för result är |
---|---|---|
True |
(utvärderas inte) | True |
False |
True |
True |
False |
False |
False |
Datatyper
Operatorn OrElse
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 Eller och IsTrue-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 Or
och IsTrue
påverkar operatorns OrElse
beteende. Om koden används OrElse
i en klass eller struktur som överbelastar Or
och IsTrue
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 OrElse
för att utföra logisk disjunction på två uttryck. Resultatet är ett Boolean
värde som representerar om något av de två uttrycken är sant. Om det första uttrycket är True
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 OrElse b > c
secondCheck = b > a OrElse b > c
thirdCheck = b > a OrElse c > b
Föregående exempel ger resultat av True
, True
respektive False
. I beräkningen av firstCheck
utvärderas inte det andra uttrycket eftersom det första redan True
är . Det andra uttrycket utvärderas dock i beräkningen av secondCheck
.
Exempel 2
I följande exempel visas en If
... -Then
instruktion som innehåller två proceduranrop. Om det första anropet returnerar True
anropas inte den andra proceduren. Detta kan ge oväntade resultat om den andra proceduren utför viktiga uppgifter som alltid bör utföras när det här avsnittet av koden körs.
If testFunction(5) = True OrElse otherFunction(4) = True Then
' If testFunction(5) is True, otherFunction(4) is not called.
' Insert code to be executed.
End If