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 Nothing
wartość , 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))