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

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

Consulta también