Operatore If (Visual Basic)
Usa la valutazione a corto circuito per restituire in modo condizionale uno dei due valori. L'operatore If
può essere chiamato con tre argomenti o con due argomenti.
Sintassi
If( [argument1,] argument2, argument3 )
Operatore If chiamato con tre argomenti
Quando If
viene chiamato usando tre argomenti, il primo argomento deve restituire un valore di cui è possibile eseguire il cast come Boolean
. Tale valore Boolean
determinerà quale degli altri due argomenti viene valutato e restituito. L'elenco seguente si applica solo quando l'operatore If
viene chiamato usando tre argomenti.
Parti
Termine | Definizione |
---|---|
argument1 |
Obbligatorio. Boolean . Determina quale degli altri argomenti valutare e restituire. |
argument2 |
Obbligatorio. Object . Valutato e restituito se argument1 viene valutato come True . |
argument3 |
Obbligatorio. Object . Valutato e restituito se argument1 restituisce False o se argument1 è una variabile che ammette i valori NullBoolean che restituisce Nothing. |
Un operatore If
chiamato con tre argomenti funziona come una funzione IIf
, ad eccezione del fatto che usa la valutazione a corto circuito. Una funzione IIf
valuta sempre tutti e tre i relativi argomenti, mentre un operatore If
con tre argomenti valuta solo due di essi. Il primo argomento If
viene valutato e il risultato viene eseguito come valore Boolean
, True
o False
. Se il valore è True
, argument2
viene valutato e viene restituito il relativo valore, ma argument3
non viene valutato. Se il valore dell'espressione Boolean
è False
, argument3
viene valutato e viene restituito il relativo valore, ma argument2
non viene valutato. Gli esempi seguenti illustrano l'uso di If
quando vengono usati tre argomenti:
' 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"))
Nell'esempio seguente viene illustrato il valore della valutazione a corto circuito. L'esempio mostra due tentativi di dividere la variabile number
per variabile divisor
tranne quando divisor
è zero. In tal caso, deve essere restituito un valore 0 e non deve essere effettuato alcun tentativo di eseguire la divisione perché si verificherebbe un errore di run-time. Poiché l'espressione If
usa la valutazione a corto circuito, valuta il secondo o il terzo argomento, a seconda del valore del primo argomento. Se il primo argomento è true, il divisore non è zero ed è possibile valutare in sicurezza il secondo argomento ed eseguire la divisione. Se il primo argomento è false, viene valutato solo il terzo argomento e viene restituito 0. Pertanto, quando il divisore è 0, non viene effettuato alcun tentativo di eseguire la divisione e non viene restituito alcun risultato di errore. Tuttavia, poiché IIf
non usa la valutazione a corto circuito, il secondo argomento viene valutato anche quando il primo argomento è false. In questo modo viene generato un errore di divisione per zero in fase di esecuzione.
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))
Operatore If chiamato con due argomenti
Il primo argomento per If
può essere omesso. In questo modo l'operatore può essere chiamato utilizzando solo due argomenti. L'elenco seguente si applica solo quando l'operatore If
viene chiamato con due argomenti.
Parti
Termine | Definizione |
---|---|
argument2 |
Obbligatorio. Object . Deve essere un tipo valore riferimento o che ammette i valori Null. Valutato e restituito quando restituisce qualsiasi valore diverso da Nothing . |
argument3 |
Obbligatorio. Object . Valutato e restituito se argument2 viene valutato come Nothing . |
Quando l'argomento Boolean
viene omesso, il primo argomento deve essere un tipo riferimento o un valore che ammette i valori Null. Se il primo argomento restituisce Nothing
, viene restituito il valore del secondo argomento. In tutti gli altri casi viene restituito il valore del primo argomento. Nell'esempio seguente viene illustrato come funziona la valutazione:
' 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))