Compartir a través de


Cómo: Definir un procedimiento con un número indefinido de parámetros

Actualización: noviembre 2007

Puede declarar una matriz de parámetros como la última entrada en la lista de parámetros de un procedimiento. Esto permite al procedimiento aceptar un conjunto de valores para ese parámetro, en lugar de sólo un único valor. No es necesario conocer el número de valores del conjunto en el momento de definir el procedimiento. Cada llamada al procedimiento determina individualmente el conjunto y cada llamada puede pasar un número diferente de valores.

Para obtener más información, vea Matrices de parámetros.

Para definir un procedimiento que puede aceptar un número indefinido de valores para su último parámetro

  1. En la declaración de procedimiento, defina la lista de parámetros de la manera normal. Todos los parámetros excepto el último son obligatorios (no Optional (Visual Basic)).

  2. Anteponga al último nombre de parámetro las palabras clave ByVal ParamArray. Este parámetro es opcional de forma automática. No incluya la palabra clave Optional.

  3. Agregue detrás del nombre de la matriz de parámetros un par de paréntesis vacíos.

  4. Agregue detrás de los paréntesis vacíos la cláusula As habitual.

  5. No agregue detrás de la cláusula As un valor predeterminado. El valor predeterminado de la matriz de parámetros es automáticamente una matriz unidimensional vacía del tipo de datos especificado en la cláusula As.

Trabajar con los valores de la matriz de parámetros

El código del procedimiento debe considerar a la matriz de parámetros una matriz unidimensional; el tipo de datos de los elementos de la matriz ha de ser el mismo que el tipo de datos de ParamArray.

Para tener acceso a uno de los valores de una matriz de parámetros

  1. En el código de procedimiento, determine la longitud de la matriz pasada a la matriz de parámetros llamando a UBound (Función, Visual Basic) en el nombre de la matriz de parámetros.

  2. En una instrucción ejecutable del código de procedimiento, agregue detrás del nombre de la matriz de parámetros un subíndice entre paréntesis. Este subíndice debería estar entre 0 y el límite superior devuelto por UBound.

Nota de seguridad:

Si se trabaja con matrices cuyo tamaño es excesivamente grande, existe el riesgo de saturar alguna capacidad interna de la aplicación. Si acepta un matriz de parámetros desde el código de llamada, debe comprobar su longitud y seguir los pasos adecuados si es demasiado grande para la aplicación.

Ejemplo

En el ejemplo siguiente se define un procedimiento con una matriz de parámetros y se generan los valores de todos los elementos de matriz pasados a la matriz de parámetros.

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array.
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub

En los siguientes ejemplos se muestran llamadas típicas a studentScores.

Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

Compilar el código

Asegúrese de que ParamArray es el último parámetro en la lista de parámetros y que ninguno de los parámetros anteriores se declara Optional.

Vea también

Tareas

Cómo: Llamar a un procedimiento que toma un número indefinido de parámetros

Conceptos

Argumentos y parámetros de procedimiento

Pasar argumentos por valor y por referencia

Pasar argumentos por posición o por nombre

Parámetros opcionales

Sobrecarga de procedimientos

Comprobar tipos en Visual Basic

Referencia

ByVal

ParamArray

Otros recursos

Matrices en Visual Basic