Compartir a través de


Matrices de parámetros (Visual Basic)

Normalmente no es posible llamar a un procedimiento con un número de argumentos superior al especificado en la declaración del procedimiento.Si se necesita un número indeterminado de argumentos, puede declararse una matriz de parámetros, que permite que un procedimiento acepte una matriz de valores en un parámetro.No es necesario conocer el número de elementos de la matriz de parámetros en el momento de definir el procedimiento.El tamaño de la matriz se determina individualmente en cada llamada al procedimiento.

Declarar una matriz de parámetros

Utilice la palabra clave ParamArray (Visual Basic) para denotar una matriz de parámetros en la lista de parámetros.Se aplican las siguientes reglas:

  • Un procedimiento puede definir únicamente una matriz de parámetros, que debe ser el último parámetro en la definición del procedimiento.

  • La matriz de parámetros debe pasarse por valor.Es un hábito de programación recomendado incluir de manera explícita la palabra clave ByVal (Visual Basic) en la definición del procedimiento.

  • La matriz de parámetros es opcional de forma automática.Su valor predeterminado es una matriz unidimensional vacía del tipo de elemento de la matriz de parámetros.

  • Todos los parámetros que preceden a la matriz de parámetros deben ser obligatorios.La matriz de parámetros debe ser el único parámetro opcional.

Llamar a un lista de parámetros

Cuando se llama a un procedimiento que define una matriz de parámetros, se puede proporcionar el argumento de los siguientes modos:

  • Ninguno, es decir, puede omitirse el argumento ParamArray (Visual Basic).En este caso, se pasará una matriz vacía al procedimiento.También puede pasarse la palabra clave Nothing (Visual Basic), obteniéndose el mismo efecto.

  • Una lista con un número arbitrario de argumentos, separados por comas.El tipo de los datos de cada argumento debe poder convertirse implícitamente al tipo de elemento ParamArray.

  • Una matriz con el mismo tipo de elemento que la matriz de parámetros.

En todas las clases, el código del procedimiento debe considerar la matriz de parámetros una matriz unidimensional, cuyos elementos deben tener el mismo tipo de datos que ParamArray.

Nota de seguridadNota sobre la seguridad

Si se trabaja con matrices cuyo tamaño es excesivamente grande, existe el riesgo de sobrecargar alguna capacidad interna de la aplicación.Si acepta una matriz de parámetros, debe comprobar el tamaño de la matriz que el código de llamada ha transferido.Tome las medidas necesarias si la matriz es demasiado grande para la aplicación.Para obtener más información, vea Matrices en Visual Basic.

Ejemplo

El ejemplo siguiente se define y se llama a la función calcSum.El modificador de ParamArray para el parámetro args permite que la función acepte un número variable de argumentos.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function

End Module

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

Vea también

Referencia

Optional (Visual Basic)

UBound

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)

Parámetros opcionales (Visual Basic)

Sobrecarga de procedimiento (Visual Basic)

Otros recursos

Matrices en Visual Basic