Condividi tramite


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 Boolean valore determinerà quale degli altri due argomenti viene valutato e restituito. L'elenco seguente si applica solo quando l'operatore If viene chiamato utilizzando tre argomenti.

Parti

Termine Definizione
argument1 Obbligatorio. Boolean. Determina quale degli altri argomenti valutare e restituire.
argument2 Obbligatorio. Object. Valutato e restituito se argument1 restituisce True.
argument3 Obbligatorio. Object. Valutato e restituito se argument1 restituisce False o se argument1 è una variabile nullableBoolean che restituisce Nothing.

Un If operatore chiamato con tre argomenti funziona come una IIf funzione, ad eccezione del fatto che usa la valutazione a corto circuito. Una IIf funzione valuta sempre tutti e tre i relativi argomenti, mentre un If operatore con tre argomenti valuta solo due di essi. Il primo If argomento viene valutato e il risultato viene eseguito come Boolean valore 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 per variabile numberdivisor 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 verifica 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 è sicuro valutare 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

Primo argomento da omettere If . 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 riferimento o valore nullable. Valutato e restituito quando restituisce qualsiasi valore diverso da Nothing.
argument3 Obbligatorio. Object. Valutato e restituito se argument2 restituisce Nothing.

Quando l'argomento Boolean viene omesso, il primo argomento deve essere un tipo riferimento o un valore nullable. 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. L'esempio seguente illustra il funzionamento di questa 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))

Vedere anche