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

Verwendet kurzschlussauswertung bedingt eine von zwei Werten zurück.Uses short-circuit evaluation to conditionally return one of two values. Die If Operator mit drei Argumenten oder mit zwei Argumenten aufgerufen werden kann.The If operator can be called with three arguments or with two arguments.

SyntaxSyntax

If( [argument1,] argument2, argument3 )  

Wenn der Operator mit drei Argumenten aufgerufen.If Operator Called with Three Arguments

Wenn If wird aufgerufen, mit drei Argumenten, muss das erste Argument ein Wert, der umgewandelt werden kann ergeben eine Boolean.When If is called by using three arguments, the first argument must evaluate to a value that can be cast as a Boolean. Dass Boolean Wert legt fest, welche der anderen beiden 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 die 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.Boolean. Bestimmt, welche anderen Argumente ausgewertet und zurückgegeben.Determines which of the other arguments to evaluate and return.
argument2 Erforderlich.Required. Object.Object. Ausgewertet und zurückgegeben, wenn argument1 ergibt True.Evaluated and returned if argument1 evaluates to True.
argument3 Erforderlich.Required. Object.Object. Ausgewertet und zurückgegeben, wenn argument1 ergibt False oder, wenn argument1 ist eine Nullable Boolean Variable, die sich ergibt nichts.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 ein IIf Funktion, verwendet jedoch kurzschlussauswertung.An If operator that is called with three arguments works like an IIf function except that it uses short-circuit evaluation. Ein IIf -Funktion wertet immer alle drei Argumente, während ein If Operator, der drei Argumenten wertet nur zwei davon.An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them. Die erste If Argument wird ausgewertet, und das Ergebnis wird als Umwandeln einer Boolean Wert True oder False.The first If argument is evaluated and the result is cast as a Boolean value, True or False. Wenn der Wert ist True, argument2 wird ausgewertet und dessen Wert zurückgegeben wird, aber argument3 wird nicht ausgewertet.If the value is True, argument2 is evaluated and its value is returned, but argument3 is not evaluated. Wenn der Wert des der Boolean Ausdruck ist False, argument3 wird ausgewertet und dessen Wert zurückgegeben wird, aber argument2 wird nicht ausgewertet.If the value of the Boolean expression is False, argument3 is evaluated and its value is returned, but argument2 is not evaluated. Die folgenden Beispiele veranschaulichen die Verwendung von If 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"))

Das folgende Beispiel zeigt den Wert der kurzschlussauswertung.The following example illustrates the value of short-circuit evaluation. Im Beispiel wird gezeigt, zwei Mal versucht, eine Variable teilen number Variable divisor Ausnahme: Wenn divisor ist 0 (null).The example shows two attempts to divide variable number by variable divisor except when divisor is zero. In diesem Fall wird 0 zurückgegeben werden sollen, und versucht nicht, die vorgenommen werden sollen die Division ausgeführt werden, da ein Fehler zur Laufzeit führen 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 die If ausdrucksverwendungen kurzschlussauswertung ist, wird es entweder das zweite oder das dritte Argument, abhängig vom Wert des ersten Arguments.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, der Divisor ist nicht 0 (null), und es ist sicher, das zweite Argument ausgewertet, und führen Sie die Division.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, nur das dritte Argument wird ausgewertet, und 0 wird zurückgegeben.If the first argument is false, only the third argument is evaluated and a 0 is returned. Wenn der Divisor 0 ist, wird daher kein Versuch unternommen, Durchführung der Division und tritt kein Fehler.Therefore, when the divisor is 0, no attempt is made to perform the division and no error results. Aber da IIf verwendet keine kurzschlussauswertung, das zweite Argument wird ausgewertet, auch 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. Dadurch wird ein Laufzeitfehler aufgrund einer Division durch 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))

Wenn der Operator mit zwei Argumenten aufgerufen.If Operator Called with Two Arguments

Das erste Argument für If kann ausgelassen werden.The first argument to If can be omitted. Dadurch wird den Operator mit zwei Argumenten aufgerufen werden sollen.This enables the operator to be called by using only two arguments. Die folgende Liste gilt nur, wenn die 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.Object. Hierbei muss es sich um eine Referenz oder nullable-Typ sein.Must be a reference or nullable type. Ausgewertet und zurückgegeben, wenn etwas anders als ergibt die Auswertung Nothing.Evaluated and returned when it evaluates to anything other than Nothing.
argument3 Erforderlich.Required. Object.Object. Ausgewertet und zurückgegeben, wenn argument2 ergibt Nothing.Evaluated and returned if argument2 evaluates to Nothing.

Wenn die Boolean Argument ausgelassen wird, wird das erste Argument eine Referenz oder nullable-Typ sein muss.When the Boolean argument is omitted, the first argument must be a reference or nullable type. Wenn das erste Argument ergibt Nothing, der Wert des zweiten Arguments wird 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 folgende 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