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

Vedi anche