Instrucción If...Then...Else (Visual Basic)
Ejecuta condicionalmente un grupo de instrucciones en función del valor de una expresión.
Sintaxis
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
Vínculos rápidos al código de ejemplo
En este artículo se incluyen varios ejemplos que ilustran los usos de If ... Then ...Else Declaración:
Partes
condition
Necesario. Expresión. Debe evaluarse True como o , o en un tipo de datos que se pueda convertir False implícitamente en Boolean .
Si la expresión es una variable que acepta valores NULL que se evalúa como Nothing , la condición se trata como si la expresión fuera y los bloques se evalúan si existen, o el bloque se ejecuta si Boolean False ElseIf Else existe.
Then
Obligatorio en la sintaxis de una sola línea; opcional en la sintaxis multilínea.
statements
Opcional. Una o varias instrucciones siguientes If a ... que se ejecutan si se evalúa como Then condition True .
elseifcondition
Obligatorio si ElseIf está presente. Expresión. Debe evaluarse True como o , o en un tipo de datos que se pueda convertir False implícitamente en Boolean .
elseifstatements
Opcional. Una o varias instrucciones siguientes ElseIf a ... que se ejecutan si se evalúa como Then elseifcondition True .
elsestatements
Opcional. Una o varias instrucciones que se ejecutan si ninguna expresión condition o anterior se evalúa como elseifcondition True .
End If
Finaliza la versión multilínea de If ... Then ...Else Bloquear.
Comentarios
Sintaxis multilínea
Cuando un If ... Then ...Else se encuentra la instrucción , condition se prueba. Si condition es , se ejecutan las instrucciones True Then siguientes. Si condition es , cada instrucción False ElseIf (si hay alguna) se evalúa en orden. Cuando se True elseifcondition encuentra , se ejecutan las instrucciones inmediatamente después de la ElseIf asociada. Si no se evalúa como o si no hay ninguna instrucción, se ejecutan las instrucciones elseifcondition True ElseIf Else siguientes. Después de ejecutar las instrucciones siguientes a , o , la Then ejecución continúa con la instrucción ElseIf Else End If siguiente.
Las ElseIf Else cláusulas y son opcionales. Puede tener ElseIf tantas cláusulas como desee en un If elemento ... Then ...Else , pero no ElseIf puede aparecer ninguna cláusula después de una cláusula Else . If...Then ...Else Las instrucciones se pueden anidar entre sí.
En la sintaxis multilínea, If la instrucción debe ser la única instrucción de la primera línea. Las ElseIf instrucciones , y solo pueden ir Else End If precedidas de una etiqueta de línea. El If ... Then ...Else block debe terminar con una End If instrucción .
Sugerencia
El botón Seleccionar... Case Statement puede ser más útil al evaluar una expresión única que tiene varios valores posibles.
Single-Line sintaxis
Puede usar la sintaxis de una sola línea para una sola condición con código para ejecutarla si es true. Sin embargo, la sintaxis de varias líneas proporciona más estructura y flexibilidad y es más fácil de leer, mantener y depurar.
Lo que sigue a Then la palabra clave se examina para determinar si una instrucción es de una sola If línea. Si aparece algo distinto de un comentario después Then de en la misma línea, la instrucción se trata como una instrucción de una sola If línea. Si Then no está presente, debe ser el inicio de una línea If múltiple... Then ...Else.
En la sintaxis de una sola línea, puede ejecutar varias instrucciones como resultado de una If decisión Then ... . Todas las instrucciones deben estar en la misma línea y estar separadas por dos puntos.
Ejemplo de sintaxis multilínea
En el ejemplo siguiente se muestra el uso de la sintaxis multilínea de If ... Then ...Else Declaración.
Module Multiline
Public Sub Main()
'Create a Random object to seed our starting value
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)
Dim message As String
'If count is zero, output will be no items
If count = 0 Then
message = "There are no items."
'If count is 1, output will be "There is 1 item.".
ElseIf count = 1 Then
message = "There is 1 item."
'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count.
Else
message = $"There are {count} items."
End If
Console.WriteLine(message)
End Sub
End Module
'This example displays output like the following:
' There are 4 items.
Ejemplo de sintaxis anidada
El ejemplo siguiente contiene nested If ... Then ...Else Declaraciones.
Module Nested
Public Sub Main()
' Run the function as part of the WriteLine output.
Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub
Private Function CheckIfTime() As Boolean
' Determine the current day of week and hour of day.
Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
Dim hour As Integer = DateTime.Now.Hour
' Return True if Wednesday from 2 to 3:59 P.M.,
' or if Thursday from noon to 12:59 P.M.
If dayW = DayOfWeek.Wednesday Then
If hour = 14 Or hour = 15 Then
Return True
Else
Return False
End If
ElseIf dayW = DayOfWeek.Thursday Then
If hour = 12 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
End Module
'This example displays output like the following:
'Time Check is False.
Single-Line de sintaxis
En el ejemplo siguiente se muestra el uso de la sintaxis de una sola línea.
Module SingleLine
Public Sub Main()
'Create a Random object to seed our starting values
Dim randomizer As New Random()
Dim A As Integer = randomizer.Next(10, 20)
Dim B As Integer = randomizer.Next(0, 20)
Dim C As Integer = randomizer.Next(0, 5)
'Let's display the initial values for comparison
Console.WriteLine($"A value before If: {A}")
Console.WriteLine($"B value before If: {B}")
Console.WriteLine($"C value before If: {C}")
' If A > 10, execute the three colon-separated statements in the order
' that they appear
If A > 10 Then A = A + 1 : B = B + A : C = C + B
'If the condition is true, the values will be different
Console.WriteLine($"A value after If: {A}")
Console.WriteLine($"B value after If: {B}")
Console.WriteLine($"C value after If: {C}")
End Sub
End Module
'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21