Operador If (Visual Basic)
Usa curtos de avaliação de circuito de-para retornar um dos dois valores de condicionalmente. O If operador pode ser chamado com três argumentos ou com dois argumentos.
If( [argument1,] argument2, argument3 )
Se o operador chamado com três argumentos
Quando If é chamado usando três argumentos, o primeiro argumento deve ser avaliada como um valor que pode ser convertido como um Boolean. Que Boolean valor determinará qual dos outros dois argumentos é avaliado e retornado. A lista a seguir se aplica somente quando o If operador é chamado usando três argumentos.
Parts
Term |
Definition |
argument1 |
Required. Boolean. Determina qual dos outros argumentos para avaliar e retornar. |
argument2 |
Required. Object. Se avaliado e retornado argument1 for avaliada como True. |
argument3 |
Required. Object. Se avaliado e retornado argument1 for avaliada como False. |
Um If operador , o que é chamado com três argumentos funciona como um IIf função exceto que ele usa-de curto circuito avaliação. Um IIffunção sempre avalia todas as três de seus argumentos, enquanto um Ifooperador que possui três argumentos avalia somente dois deles. O primeiro If argumento é avaliado e o resultado é um conversão como um Boolean valor, True ou False. Se o valor for True, argument2 é avaliada e seu valor é retornado, mas argument3 não será avaliada. Se o valor da Boolean a expressão é False, argument3 é avaliada e seu valor é retornado, mas argument2 não será avaliada. Os exemplos a seguir ilustram o uso de If quando são usados os três argumentos:
' 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 de curto-de avaliação de circuito. O exemplo mostra duas tentativas para dividir a variável number pela variável divisor , exceto quando divisor é zero. Nesse caso, deve ser retornado 0 e deve ser feita nenhuma tentativa para realizar a divisão porque um tempo de execução-que resultaria do erro . Porque o If a expressão utiliza curto-de avaliação de circuito, ele avalia o segundo ou terceiro argumento, dependendo do valor do primeiro argumento. Se o primeiro argumento for true, 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 é avaliado e um 0 é retornado. Portanto, quando o divisor for 0, nenhuma tentativa para realizar a divisão e nenhum resultado do erro . No entanto, como IIf não usa short-de avaliação de circuito, o segundo argumento é avaliado, mesmo quando o primeiro argumento é falso. Isso faz com que uma execução--dividir tempo por-zero erro.
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 chamado com dois argumentos
O primeiro argumento para If pode ser omitido. Isso permite que o operador a ser chamado usando apenas dois argumentos. A lista a seguir se aplica somente quando o If operador é chamado com dois argumentos.
Parts
Term |
Definition |
argument2 |
Required. Object. Deve ser uma referência ou tipo que permite valor nulo. Avaliado e retornado quando avaliada como algo diferente de Nothing. |
argument3 |
Required. Object. Se avaliado e retornado argument2 for avaliada como Nothing. |
Quando o Boolean argumento for omitido, o primeiro argumento deve ser uma referência ou tipo que permite valor nulo. Se o primeiro argumento é avaliado como Nothing, será retornado o valor do segundo argumento . Em outros casos, o valor do primeiro argumento é retornado. O exemplo a seguir ilustra como funciona a essa avaliação.
' 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))