Partilhar via


Operador If (Visual Basic)

Usa a avaliação de curto-circuito para retornar condicionalmente um dos dois valores. O If operador pode ser chamado com três argumentos ou com dois argumentos.

Sintaxe

If( [argument1,] argument2, argument3 )

Se o operador for chamado com três argumentos

Quando If é chamado usando três argumentos, o primeiro argumento deve ser avaliado para um valor que pode ser convertido como um Boolean. Esse Boolean valor determinará qual dos outros dois argumentos será avaliado e retornado. A lista a seguir se aplica somente quando o If operador é chamado usando três argumentos.

Partes

Termo Definição
argument1 Obrigatório. Boolean. Determina qual dos outros argumentos deve ser avaliado e retornado.
argument2 Obrigatório. Object. Avaliado e devolvido se argument1 avalia a True.
argument3 Obrigatório. Object. Avaliado e retornado se argument1 avalia para False ou se argument1 é uma variável anulávelBoolean que avalia como Nothing.

Um If operador que é chamado com três argumentos funciona como uma IIf função, exceto que ele usa avaliação de curto-circuito. Uma IIf função sempre avalia todos os seus três argumentos, enquanto um If operador que tem três argumentos avalia apenas dois deles. O primeiro If argumento é avaliado e o resultado é lançado como um Boolean valor, True ou False. Se o valor for True, argument2 é avaliado e seu valor é retornado, mas argument3 não é avaliado. Se o valor da Boolean expressão for False, argument3 é avaliado e seu valor é retornado, mas argument2 não é avaliado. Os exemplos a seguir ilustram o uso de If quando três argumentos são usados:

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

O exemplo a seguir ilustra o valor da avaliação de curto-circuito. O exemplo mostra duas tentativas de dividir variável number por variável, divisor exceto quando divisor é zero. Nesse caso, um 0 deve ser retornado e nenhuma tentativa deve ser feita para executar a divisão porque um erro em tempo de execução resultaria. Como a If expressão usa avaliação de curto-circuito, ela avalia o segundo ou o terceiro argumento, dependendo do valor do primeiro argumento. Se o primeiro argumento for verdadeiro, o divisor não é zero e é seguro avaliar o segundo argumento e realizar a divisão. Se o primeiro argumento for falso, apenas o terceiro argumento será avaliado e um 0 será retornado. Portanto, quando o divisor é 0, nenhuma tentativa é feita para realizar a divisão e nenhum erro resulta. No entanto, como IIf não usa avaliação de curto-circuito, o segundo argumento é avaliado mesmo quando o primeiro argumento é falso. Isso causa um erro de divisão por zero em tempo de execução.

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

Se o operador chamou com dois argumentos

O primeiro argumento pode If ser omitido. Isso permite que o operador seja chamado usando apenas dois argumentos. A lista a seguir se aplica somente quando o If operador é chamado com dois argumentos.

Partes

Termo Definição
argument2 Obrigatório. Object. Deve ser um tipo de referência ou valor anulável. Avaliado e devolvido quando avalia para qualquer coisa diferente de Nothing.
argument3 Obrigatório. Object. Avaliado e devolvido se argument2 avalia a Nothing.

Quando o Boolean argumento é omitido, o primeiro argumento deve ser uma referência ou um tipo de valor anulável. Se o primeiro argumento for avaliado como Nothing, o valor do segundo argumento será retornado. Em todos os outros casos, o valor do primeiro argumento é retornado. O exemplo a seguir ilustra como essa avaliação funciona:

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

Consulte também