Pasar argumentos por posición o por nombre (Visual Basic)

Cuando se llama a un procedimiento Sub o Function, los argumentos pueden pasarse por posición, es decir, en el orden en que aparecen en la definición del procedimiento, o por nombre, sin tener en cuenta la posición.

Para pasar un argumento por nombre, hay que especificar el nombre declarado del argumento, seguido de un signo de dos puntos y un signo igual (:=) y seguido del valor del argumento. Los argumentos que se pasan por nombre pueden suministrarse en cualquier orden.

Por ejemplo, el siguiente procedimiento Sub toma tres argumentos:

Sub studentInfo(ByVal name As String, 
       Optional ByVal age As Short = 0, 
       Optional ByVal birth As Date = #1/1/2000#)

  Debug.WriteLine("Name = " & name & 
                "; age = " & CStr(age) & 
                "; birth date = " & CStr(birth))
End Sub

Cuando se llama a este procedimiento, los argumentos pueden suministrarse por posición, por nombre o mediante una combinación de ambos.

Pasar argumentos por posición

Puede llamar al procedimiento studentInfo pasando sus argumentos por posición y delimitados por comas, como se muestra en el ejemplo siguiente:

Call studentInfo("Mary", 19, #9/21/1981#)

Si omite un argumento opcional de una lista de argumentos por posición, deberá mantener su posición mediante una coma. El ejemplo siguiente llama a studentInfo sin el argumento age :

Call studentInfo("Mary", , #9/21/1981#)

Pasar argumentos por nombre

Otra opción es llamar al procedimiento studentInfo pasando sus argumentos por nombre, también delimitados por comas, como se muestra en el ejemplo siguiente:

Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

Pasar argumentos por posición y por nombre

Puede suministrar los argumentos por posición y por nombre a la vez en la misma llamada a un procedimiento, como se muestra en el ejemplo siguiente:

Call studentInfo("Mary", birth:=#9/21/1981#)

En el ejemplo anterior, no se necesita una coma adicional para mantener la posición del argumento age omitido, puesto que birth se pasa por nombre.

Si se suministran argumentos por nombre y por posición, los argumentos por posición deben preceder al resto. Si se ha suministrado un argumento por nombre, el resto de los argumentos deberán especificarse también por nombre.

Suministrar argumentos opcionales por nombre

Pasar argumentos por nombre tiene especial utilidad si se llama a un procedimiento que tiene varios argumentos opcionales. Si se suministran argumentos por nombre, no es necesario utilizar comas consecutivas para denotar los argumentos por posición ausentes. Pasar argumentos por nombre facilita también la tarea de realizar un seguimiento de los argumentos que se pasan y de los que se omiten.

Restricciones al suministro de argumentos por nombre

No se pueden pasar argumentos por nombre a fin de evitar tener que especificar argumentos requeridos. Sólo pueden omitirse los argumentos opcionales.

No se puede pasar una matriz de parámetros por nombre. Esto obedece a que, cuando se llama al procedimiento, se suministra a la matriz de parámetros un número indeterminado de argumentos separados por comas, y el compilador no puede asociar más de un argumento a cada nombre individual.

Vea también

Tareas

Cómo: Pasar argumentos a un procedimiento (Visual Basic)

Cómo: Pasar argumentos a un procedimiento por nombre (Visual Basic)

Referencia

Optional (Visual Basic)

ParamArray (Visual Basic)

Conceptos

Procedimientos en Visual Basic

Argumentos y parámetros de procedimiento (Visual Basic)

Pasar argumentos por valor y por referencia (Visual Basic)

Parámetros opcionales (Visual Basic)

Matrices de parámetros (Visual Basic)