If-Operator (Visual Basic)

Verwendet die Kurzschlussauswertung für die bedingte Rückgabe eines von zwei Werten. Der If-Operator kann mit drei oder mit zwei Argumenten aufgerufen werden.

Syntax

If( [argument1,] argument2, argument3 )

Aufrufen des If-Operators mit drei Argumenten

Bei einem Aufruf von If mit drei Argumenten muss das erste Argument zu einem Wert ausgewertet werden, der in einen Boolean-Wert umgewandelt werden kann. Dieser Boolean-Wert bestimmt, welches der beiden anderen Argumente ausgewertet und zurückgegeben wird. Die folgende Liste gilt nur für Aufrufe des If-Operators mit drei Argumenten.

Bestandteile

Begriff Definition
argument1 Erforderlich. Boolean. Bestimmt, welche der anderen Argumente ausgewertet und zurückgegeben werden soll.
argument2 Erforderlich. Object. Wird ausgewertet und zurückgegeben, wenn argument1 zu True ausgewertet wird.
argument3 Erforderlich. Object. Wird ausgewertet und zurückgegeben, wenn argument1 zu False ausgewertet wird, oder wenn argument1 eine Nullable-Variable vom Typ Boolean ist, die zu Nothing ausgewertet wird.

Ein If-Operator, der mit drei Argumenten aufgerufen wird, funktioniert wie eine IIf-Funktion, mit der Ausnahme, dass er die Kurzschlussauswertung verwendet. Eine IIf-Funktion wertet immer alle drei Argumente aus, während ein If-Operator mit drei Argumenten nur zwei davon auswertet. Das erste If-Argument wird ausgewertet und das Ergebnis in einen Boolean-Wert mit den Optionen True oder False umgewandelt. Ist der Wert True, wird argument2 ausgewertet und sein Wert zurückgegeben. argument3 wird jedoch nicht ausgewertet. Ist der Wert des Boolean-Ausdrucks False, wird argument3 ausgewertet und sein Wert zurückgegeben. argument2 wird jedoch nicht ausgewertet. Die folgenden Beispiele veranschaulichen die Verwendung von If mit drei Argumenten:

' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))

' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))

Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))

Das folgende Beispiel zeigt den Wert einer Kurzschlussauswertung. Im Beispiel werden zwei Versuche ausgeführt, die Variable number durch die Variable divisor zu dividieren, außer wenn divisor 0 ist. In diesem Fall sollte 0 zurückgegeben werden, und die Division sollte nicht durchgeführt werden, da das Ergebnis ein Laufzeitfehler wäre. Da der If-Ausdruck die Kurzschlussauswertung verwendet, wertet er je nach Wert des ersten Arguments entweder das zweite oder das dritte Argument aus. Wenn das erste Argument TRUE ist, ist der Divisor nicht 0, und das zweite Argument kann risikolos ausgewertet und die Division durchgeführt werden. Wenn das erste Argument FALSE ist, wird nur das dritte Argument ausgewertet, und es wird 0 zurückgegeben. Das bedeutet: Ist der Divisor 0, wird kein Versuch unternommen, die Division auszuführen, und es tritt kein Fehler auf. Da IIf jedoch die Kurzschlussauswertung nicht verwendet, wird das zweite Argument auch dann ausgewertet, wenn das erste Argument FALSE ist. Dies führt zu einem Laufzeitfehler aufgrund einer Division durch 0.

number = 12

' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))

Aufrufen des If-Operators mit zwei Argumenten

Das erste Argument für If kann weggelassen werden. Dadurch kann der Operator mit nur zwei Argumenten aufgerufen werden. Die folgende Liste gilt nur für Aufrufe des If-Operators mit zwei Argumenten.

Bestandteile

Begriff Definition
argument2 Erforderlich. Object. Muss ein Verweis- oder Nullable-Werttyp sein. Wird ausgewertet und zurückgegeben, wenn es zu einem anderen Wert als Nothingausgewertet wird.
argument3 Erforderlich. Object. Wird ausgewertet und zurückgegeben, wenn argument2 zu Nothing ausgewertet wird.

Wird das Boolean-Argument weggelassen, muss das erste Argument ein Verweis- oder Nullable-Werttyp sein. Wird das erste Argument zu Nothing ausgewertet, wird der Wert des zweiten Arguments zurückgegeben. In allen anderen Fällen wird der Wert des ersten Arguments zurückgegeben. Im folgenden Beispiel wird die Auswertung veranschaulicht:

' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6

' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))

second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))

first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))

Siehe auch