If — Operator (Visual Basic)

Używa oceny zwarciowej, aby warunkowo zwrócić jedną z dwóch wartości. Operator If może być wywoływany z trzema argumentami lub z dwoma argumentami.

Składnia

If( [argument1,] argument2, argument3 )

Jeśli operator wywoływany z trzema argumentami

Gdy If jest wywoływana przy użyciu trzech argumentów, pierwszy argument musi zostać obliczony na wartość, którą można rzutować jako Boolean. Ta Boolean wartość określi, które z pozostałych dwóch argumentów są oceniane i zwracane. Poniższa lista ma zastosowanie tylko wtedy, gdy If operator jest wywoływany przy użyciu trzech argumentów.

generatora

Termin Definicja
argument1 Wymagany. Boolean. Określa, które z pozostałych argumentów mają być obliczane i zwracane.
argument2 Wymagany. Object. Obliczone i zwrócone, jeśli argument1 wartość ma wartość True.
argument3 Wymagany. Object. Obliczone i zwrócone, jeśli argument1 zostanie obliczona wartość lub False jeśli argument1 jest zmienną dopuszczającąBoolean wartość Null, która daje wartość Nothing.

Operator wywoływany z trzema If argumentami działa jak funkcja, z tą różnicą IIf , że używa oceny zwarciowej. IIf Funkcja zawsze ocenia wszystkie trzy argumenty, natomiast If operator, który ma trzy argumenty, ocenia tylko dwa z nich. Pierwszy If argument jest obliczany, a wynik jest rzutowany jako Boolean wartość True lub False. Jeśli wartość to True, argument2 jest obliczana, a jej wartość jest zwracana, ale argument3 nie jest obliczana. Jeśli wartość Boolean wyrażenia to False, argument3 jest obliczana i zwracana jest jego wartość, ale argument2 nie jest obliczana. W poniższych przykładach przedstawiono sposób użycia If trzech argumentów:

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

W poniższym przykładzie przedstawiono wartość oceny zwarć obwodu. W przykładzie pokazano dwie próby podzielenia zmiennej number przez zmienną divisor , z wyjątkiem sytuacji, gdy divisor jest to zero. W takim przypadku należy zwrócić wartość 0 i nie należy podejmować żadnej próby wykonania dzielenia, ponieważ wynik błędu czasu wykonywania. If Ponieważ wyrażenie używa oceny zwarciowej, oblicza drugi lub trzeci argument, w zależności od wartości pierwszego argumentu. Jeśli pierwszy argument ma wartość true, dzielniki nie są zerowe i można bezpiecznie ocenić drugi argument i wykonać podział. Jeśli pierwszy argument ma wartość false, zwracany jest tylko trzeci argument i zwracany jest argument 0. W związku z tym, gdy dzielnika wynosi 0, nie jest podejmowana próba wykonania dzielenia i brak wyników błędu. Jednak ponieważ IIf nie używa oceny zwarciowej, drugi argument jest obliczany nawet wtedy, gdy pierwszy argument jest fałszywy. Powoduje to błąd dzielenia w czasie wykonywania przez zero.

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

Jeśli operator wywoływany z dwoma argumentami

Pierwszy argument, który można pominąć If . Dzięki temu operator może być wywoływany przy użyciu tylko dwóch argumentów. Poniższa lista ma zastosowanie tylko wtedy, gdy If operator jest wywoływany z dwoma argumentami.

generatora

Termin Definicja
argument2 Wymagany. Object. Musi być typem wartości referencyjnej lub dopuszczanej do wartości null. Obliczone i zwrócone, gdy oblicza wartość dowolnego elementu innego niż Nothing.
argument3 Wymagany. Object. Obliczone i zwrócone, jeśli argument2 wartość ma wartość Nothing.

Po pominięciu argumentu Boolean pierwszy argument musi być typem wartości referencyjnej lub dopuszczanej do wartości null. Jeśli pierwszy argument zwróci Nothingwartość , zwracana jest wartość drugiego argumentu. We wszystkich innych przypadkach zwracana jest wartość pierwszego argumentu. W poniższym przykładzie pokazano, jak działa ta ocena:

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

Zobacz też