Freigeben über


AndAlso-Operator

Aktualisiert: November 2007

Führt eine logische Kurzschlusskonjunktion zweier Ausdrücke aus.

result = expression1 AndAlso expression2

Bestandteile

  • result
    Erforderlich. Beliebiger Boolean-Ausdruck. Das Ergebnis ist das Boolean-Ergebnis des Vergleichs zwischen zwei Ausdrücken.

  • 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 beide Ausdrücke True ergeben, ist result ebenfalls True. Die folgende Tabelle veranschaulicht, wie result bestimmt wird.

Wenn expression1 gleich

und expression2 gleich

hat result den Wert

True

True

True

True

False

False

False

(nicht ausgewertet)

False

Ein Verwendungszweck des AndAlso-Operators besteht darin, das Vorhandensein einer Objektinstanz zu testen, bevor der Zugriff auf einen ihrer Member versucht wird. Die folgende Codezeile veranschaulicht dies.

If newObject AndAlso newObject.initFinished Then

Durch den Zugriff auf die initFinished-Eigenschaft in der obigen Codezeile kann eine NullReferenceException-Ausnahme ausgelöst werden, wenn der newObject-Variablen keine Objektinstanz zugewiesen war. Der AndAlso-Operator bewirkt jedoch, dass der Compiler den Zugriff auf initFinished umgeht, wenn newObject den Wert Nothing hat, da NothingFalse ergibt.

Datentypen

Der AndAlso-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 ganz als Boolean 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 AndAlso 12 z. B. –1.

Überladen

Der And-Operator (Visual Basic) und der IsFalse-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 And-Operators und des IsFalse-Operators beeinflusst das Verhalten des AndAlso-Operators. Wenn im Code AndAlso für eine Klasse oder Struktur verwendet wird, die And und IsFalse überlädt, müssen Sie das neu definierte Verhalten der Operatoren kennen. Weitere Informationen finden Sie unter Operatorprozeduren.

Beispiel

In diesem Beispiel wird mit dem AndAlso-Operator eine logische Konjunktion zweier Ausdrücke ausgeführt. Das Ergebnis ist ein Boolean-Wert, der darstellt, ob der gesamte verbundene Ausdruck True ist. Wenn der erste Ausdruck False 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 AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b

Durch das vorangehende Beispiel werden die Ergebnisse True, False bzw. False erzeugt. Bei der Berechnung von secondCheck wird der zweite Ausdruck nicht ausgewertet, da der erste Ausdruck bereits False ist. Der zweite Ausdruck wird jedoch bei der Berechnung von thirdCheck ausgewertet.

Das folgende Beispiel zeigt eine Function-Prozedur, die in den Elementen eines Arrays nach einem gegebenen Wert sucht. Wenn das Array leer ist oder die zulässige Arraylänge überschritten wurde, wird das Arrayelement von der While-Anweisung nicht auf den Suchwert überprüft.

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

Siehe auch

Konzepte

Logische und bitweise Operatoren in Visual Basic

Referenz

Logische/Bitweise Operatoren

Operatorrangfolge in Visual Basic

Operatoren sortiert nach Funktionalität

And-Operator (Visual Basic)

IsFalse-Operator