OrElse-Operator
Aktualisiert: November 2007
Führt eine inklusive logische Kurzschlussdisjunktion an zwei Ausdrücken aus.
result = expression1 OrElse expression2
Bestandteile
result
Erforderlich. Beliebiger Boolean-Ausdruck.expression1
Erforderlich. Beliebiger Boolean-Ausdruck.expression2
Erforderlich. Beliebiger Boolean-Ausdruck.
Hinweise
Eine logische Operation wird als Kurzschlussoperation bezeichnet, wenn der kompilierte Code die Auswertung eines Ausdrucks abhängig von dem Ergebnis eines anderen Ausdrucks umgehen kann. Wenn das Ergebnis des ersten ausgewerteten Ausdrucks das Endergebnis der Operation bestimmt, muss der zweite Ausdruck nicht ausgewertet werden, da dieser das Endergebnis nicht ändern kann. Kurzschlussoperationen können zu einer Leistungssteigerung führen, wenn der umgangene Ausdruck sehr komplex ist oder Prozeduraufrufe enthält.
Wenn einer der beiden oder beide Ausdrücke True ergeben, hat result den Wert True. Die folgende Tabelle veranschaulicht, wie result bestimmt wird.
Wenn expression1 gleich |
und expression2 gleich |
hat result den Wert |
---|---|---|
True |
(nicht ausgewertet) |
True |
False |
True |
True |
False |
False |
False |
Datentypen
Der OrElse-Operator wird nur für den Boolean-Datentyp (Visual Basic) definiert. Visual Basic konvertiert jeden Operanden je nach Bedarf in Boolean-Werte und führt die Operation komplett als Boolean-Operation aus. Wenn Sie das Ergebnis einem numerischen Typ zuweisen, konvertiert Visual Basic es vom Boolean-Typ in diesen Typ. Dies kann zu unerwartetem Verhalten führen. Bei der Konvertierung in Integer ergibt 5 OrElse 12 z. B. –1.
Überladen
Der Or-Operator (Visual Basic) und der IsTrue-Operator können überladen werden. Das bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definiert, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Das Überladen des Or-Operators und des IsTrue-Operators beeinflusst das Verhalten des OrElse-Operators. Wenn im Code OrElse für eine Klasse oder Struktur verwendet wird, die Or und IsTrue überlädt, müssen Sie das neu definierte Verhalten der Operatoren kennen. Weitere Informationen finden Sie unter Operatorprozeduren.
Beispiel
Im folgenden Beispiel wird mit dem OrElse-Operator an zwei Ausdrücken eine logische Disjunktion ausgeführt. Das Ergebnis ist ein Boolean-Wert, der darstellt, ob einer der beiden Ausdrücke True ist. Wenn der erste Ausdruck True ist, wird der zweite nicht ausgewertet.
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
Durch das vorangehende Beispiel werden die Ergebnisse True, True bzw. False erzeugt. Bei der Berechnung von firstCheck wird der zweite Ausdruck nicht ausgewertet, da der erste Ausdruck bereits True ist. Der zweite Ausdruck wird jedoch bei der Berechnung von secondCheck ausgewertet.
Im folgenden Beispiel wird eine If...Then-Anweisung mit zwei Prozeduraufrufen dargestellt. Wenn der erste Aufruf True zurückgibt, wird die zweite Prozedur nicht aufgerufen. Dies kann zu unerwarteten Ergebnissen führen, wenn die zweite Prozedur wichtige Aufgaben ausführt, die bei Ausführung dieses Codeabschnitts stets ausgeführt werden müssen.
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
Siehe auch
Konzepte
Logische und bitweise Operatoren in Visual Basic
Referenz
Operatorrangfolge in Visual Basic