Buscar..


SI ... entonces ... si no

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

Si operador

9.0
If(condition > value, "True", "False")

Podemos usar el operador If en lugar de If ... Then ... Else..End If instrucción de bloques.

Considere el siguiente ejemplo:

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

es lo mismo que

MsgBox(If(10 > 9, "True", "False"))

If() usa la evaluación de cortocircuito , lo que significa que solo evaluará los argumentos que usa. Si la condición es falsa (o un Nullable que es Nothing ), la primera alternativa no se evaluará en absoluto, y no se observará ninguno de sus efectos secundarios. Esto es efectivamente el mismo que el operador ternario de C # en la forma de condition?a:b .

Esto es especialmente útil para evitar excepciones:

Dim z As Integer = If(x = 0, 0, y/x)

Todos sabemos que dividir por cero arrojará una excepción, pero If() aquí protege contra esto haciendo un cortocircuito a solo la expresión que la condición ya ha asegurado es válida.

Otro ejemplo:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

Si varString <> "N/A" se evalúa como False , asignará varDate valor 's como Now.Date sin evaluar la primera expresión.

9.0

Las versiones anteriores de VB no tienen el operador If() y tienen que conformarse con la función integrada IIf() . Como se trata de una función, no un operador, no lo hace corto circuito; todas las expresiones se evalúan, con todos los efectos secundarios posibles, incluidas las penalizaciones de rendimiento, el cambio de estado y las excepciones de lanzamiento. (Los dos ejemplos anteriores que evitan las excepciones se generarían si se convirtieran a IIf ). Si alguno de estos efectos secundarios presenta un problema, no hay forma de usar un condicional en línea; en su lugar, confíe en If..Then bloquea como de costumbre.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow