Visual Basic .NET Language
Condiciones
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
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.
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.