Parámetros opcionales (Visual Basic)
Un parámetro de un procedimiento puede ser opcional si así se especifica y no es necesario proporcionarle argumentos al llamar al procedimiento. Los parámetros opcionales se indican mediante la palabra clave Optional en la definición del procedimiento. Se aplican las siguientes reglas:
Todos los parámetros opcionales de la definición del procedimiento deben especificar un valor predeterminado.
El valor predeterminado de un parámetro opcional debe ser una expresión constante.
Todos los parámetros que vayan a continuación de un parámetro opcional en la definición del procedimiento también deben ser opcionales.
La siguiente sintaxis muestra una declaración de procedimiento con un parámetro opcional:
Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)
Llamar a procedimientos con parámetros opcionales
Cuando se llama a un procedimiento con un parámetro opcional, se puede elegir si se proporciona o no el argumento. Si no se proporciona, el procedimiento utiliza el valor predeterminado declarado para dicho parámetro.
Si se omiten uno o más argumentos opcionales de la lista de argumentos, hay que utilizar comas sucesivas para delimitar sus posiciones. En el ejemplo de llamada siguiente se suministran los argumentos primero y cuarto, pero no el segundo ni el tercero:
Call sub name(argument 1, , , argument 4)
Determinar si un argumento opcional está presente
En tiempo de ejecución un procedimiento no puede detectar si un argumento determinado se ha omitido o si el código de llamada ha suministrado de forma explícita el valor predeterminado de dicho argumento. Si fuese necesario hacer esta distinción, se podría establecer como valor predeterminado un valor improbable. El siguiente procedimiento define el parámetro opcional office y comprueba si su valor predeterminado, QJZ, ha sido omitido en la llamada:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Si el parámetro opcional es un tipo de referencia, como String, puede utilizar Nothing como valor predeterminado, siempre y cuando éste no sea un valor esperado para el argumento.
Parámetros opcionales y sobrecarga
Otra forma de definir un procedimiento con parámetros opcionales consiste en utilizar una sobrecarga. Si tiene un parámetro opcional, puede definir dos versiones sobrecargadas del procedimiento, una que acepte el parámetro y otra sin él. Este planteamiento se complica a medida que aumenta el número de parámetros opcionales. No obstante, tiene la ventaja de que permite saber con total certeza si el programa de llamada ha suministrado o no cada argumento opcional.
Vea también
Tareas
Cómo: Definir parámetros opcionales para un procedimiento (Visual Basic)
Cómo: Llamar a un procedimiento que utiliza parámetros opcionales (Visual Basic)
Cómo: Determinar si se ha suministrado un parámetro opcional (Visual Basic)
Referencia
Conceptos
Procedimientos en Visual Basic
Argumentos y parámetros de procedimiento (Visual Basic)
Pasar argumentos por valor y por referencia (Visual Basic)
Pasar argumentos por posición o por nombre (Visual Basic)