If-Operator (Visual Basic)If Operator (Visual Basic)

Verwendet die Kurzschluss Auswertung, um einen von zwei Werten bedingt zurückzugeben.Uses short-circuit evaluation to conditionally return one of two values. Der If-Operator kann mit drei Argumenten oder mit zwei Argumenten aufgerufen werden.The If operator can be called with three arguments or with two arguments.

SyntaxSyntax

If( [argument1,] argument2, argument3 )  

If-Operator mit drei Argumenten aufgerufenIf Operator Called with Three Arguments

Wenn If mithilfe von drei Argumenten aufgerufen wird, muss das erste Argument einen Wert ergeben, der als Boolean umgewandelt werden kann.When If is called by using three arguments, the first argument must evaluate to a value that can be cast as a Boolean. Der Boolean-Wert bestimmt, welches der beiden anderen Argumente ausgewertet und zurückgegeben wird.That Boolean value will determine which of the other two arguments is evaluated and returned. Die folgende Liste gilt nur, wenn der If-Operator mit drei Argumenten aufgerufen wird.The following list applies only when the If operator is called by using three arguments.

TeileParts

BegriffTerm DefinitionDefinition
argument1 Erforderlich.Required. Boolean. installiert haben.Boolean. Bestimmt, welches der anderen Argumente ausgewertet und zurückgegeben werden soll.Determines which of the other arguments to evaluate and return.
argument2 Erforderlich.Required. Object. installiert haben.Object. Wird ausgewertet und zurückgegeben, wenn argument1 als True ausgewertet wird.Evaluated and returned if argument1 evaluates to True.
argument3 Erforderlich.Required. Object. installiert haben.Object. Wird ausgewertet und zurückgegeben, wenn argument1 als False ausgewertet wird oder wenn argument1 eine NULL-Wertezulassen Boolean-Variable ist, die zu Nothingausgewertet wird.Evaluated and returned if argument1 evaluates to False or if argument1 is a NullableBoolean variable that evaluates to Nothing.

Ein If-Operator, der mit drei Argumenten aufgerufen wird, funktioniert wie eine IIf-Funktion, mit der Ausnahme, dass Sie eine Kurzschluss Auswertung verwendet.An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. Eine IIf-Funktion wertet immer alle drei ihrer Argumente aus, wohingegen ein If-Operator mit drei Argumenten nur zwei Werte auswertet.An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them. Das erste If-Argument wird ausgewertet, und das Ergebnis wird als Boolean-Wert True oder False umgewandelt.The first If argument is evaluated and the result is cast as a Boolean value, True or False. Wenn der Wert True ist, wird argument2 ausgewertet und sein Wert zurückgegeben, argument3 jedoch nicht ausgewertet wird.If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. Wenn der Wert des Boolean-Ausdrucks False ist, wird argument3 ausgewertet und sein Wert zurückgegeben, argument2 jedoch nicht ausgewertet wird.If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. In den folgenden Beispielen wird die Verwendung von If veranschaulicht, wenn drei Argumente verwendet werden:The following examples illustrate the use of If when three arguments are used:

' 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"))

Im folgenden Beispiel wird der Wert der Kurzschluss Auswertung veranschaulicht.The following example illustrates the value of short-circuit evaluation. Das Beispiel zeigt zwei Versuche, Variablen number durch Variable divisor zu teilen, außer wenn divisor 0 (null) ist.The example shows two attempts to divide variable number by variable divisor except when divisor is zero. In diesem Fall sollte 0 (null) zurückgegeben werden, und es sollte nicht versucht werden, die Division auszuführen, da ein Laufzeitfehler entstehen würde.In that case, a 0 should be returned, and no attempt should be made to perform the division because a run-time error would result. Da der Ausdruck "If" eine Kurzschluss Auswertung verwendet, wertet er je nach Wert des ersten Arguments entweder das zweite oder das dritte Argument aus.Because the If expression uses short-circuit evaluation, it evaluates either the second or the third argument, depending on the value of the first argument. Wenn das erste Argument true ist, ist der Divisor nicht NULL, und es ist sicher, das zweite Argument auszuwerten und die Division auszuführen.If the first argument is true, the divisor is not zero and it is safe to evaluate the second argument and perform the division. Wenn das erste Argument false ist, wird nur das dritte Argument ausgewertet, und es wird 0 zurückgegeben.If the first argument is false, only the third argument is evaluated and a 0 is returned. Wenn der Divisor also 0 ist, wird nicht versucht, die Division und keine Fehler Ergebnisse auszuführen.Therefore, when the divisor is 0, no attempt is made to perform the division and no error results. Da IIf jedoch keine Kurzschluss Auswertung verwendet, wird das zweite Argument auch dann ausgewertet, wenn das erste Argument false ist.However, because IIf does not use short-circuit evaluation, the second argument is evaluated even when the first argument is false. Dies führt zu einem Laufzeitfehler aufgrund einer Division durch 0 (null).This causes a run-time divide-by-zero error.

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

If-Operator mit zwei Argumenten aufgerufenIf Operator Called with Two Arguments

Das erste Argument für "If" kann weggelassen werden.The first argument to If can be omitted. Dadurch kann der Operator nur mit zwei Argumenten aufgerufen werden.This enables the operator to be called by using only two arguments. Die folgende Liste gilt nur, wenn der If-Operator mit zwei Argumenten aufgerufen wird.The following list applies only when the If operator is called with two arguments.

TeileParts

BegriffTerm DefinitionDefinition
argument2 Erforderlich.Required. Object. installiert haben.Object. Muss ein Verweis oder ein Typ sein, der NULL-Werte zulässt.Must be a reference or nullable type. Wird ausgewertet und zurückgegeben, wenn es etwas anderes als Nothing ausgewertet wird.Evaluated and returned when it evaluates to anything other than Nothing.
argument3 Erforderlich.Required. Object. installiert haben.Object. Wird ausgewertet und zurückgegeben, wenn argument2 als Nothing ausgewertet wird.Evaluated and returned if argument2 evaluates to Nothing.

Wenn das Argument "Boolean" weggelassen wird, muss das erste Argument ein Verweis oder ein Typ sein, der NULL-Werte zulässt.When the Boolean argument is omitted, the first argument must be a reference or nullable type. Wenn das erste Argument zu Nothing ausgewertet wird, wird der Wert des zweiten Arguments zurückgegeben.If the first argument evaluates to Nothing, the value of the second argument is returned. In allen anderen Fällen wird der Wert des ersten Arguments zurückgegeben.In all other cases, the value of the first argument is returned. Im folgenden Beispiel wird veranschaulicht, wie diese Auswertung funktioniert.The following example illustrates how this evaluation works.

' 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 auchSee also