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 Nothing ausgewertet 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))