Dela via


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 IsTrueska 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 Trueutvä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, Truerespektive False . I beräkningen av firstCheckutvä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 Trueanropas 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

Se även