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

Actualización: noviembre 2007

Si un procedimiento tiene un parámetro ParamArray, no se puede definir una versión sobrecargada que tome una matriz unidimensional para la matriz de parámetros. Para obtener más información, vea "Sobrecargas implícitas de un parámetro ParamArray" en Consideraciones sobre la sobrecarga de procedimientos.

Para sobrecargar un procedimiento que toma un número variable de parámetros

  1. Determine si para el procedimiento y el código de llamada resulta más ventajoso utilizar versiones sobrecargadas que utilizar un parámetro ParamArray. Vea "Sobrecargas y matrices de parámetros" en Consideraciones sobre la sobrecarga de procedimientos.

  2. Determine qué número de valores proporcionados debe aceptar el procedimiento en la parte variable de la lista de parámetros. Podría tratarse de ningún valor y de una matriz unidimensional.

  3. Para cada combinación aceptable de valores proporcionados, escriba una instrucción de declaración Sub o Function que defina la lista de parámetros correspondiente. No utilice la palabra clave Optional ni ParamArray en esta versión sobrecargada.

  4. En cada declaración, anteponga la palabra clave Overloads a la palabra clave Sub o Function.

  5. Después de cada declaración, escriba el código del procedimiento que debería ejecutarse cuando el código de llamada proporcione los valores correspondientes a la lista de parámetros de esa declaración.

  6. Finalice todos los procedimientos con la instrucción End Sub o End Function, según corresponda.

Ejemplo

En el ejemplo siguiente se muestra un procedimiento definido con un parámetro ParamArray y a continuación se muestra una definición equivalente con procedimientos sobrecargados.

Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

No puede sobrecargar este tipo de procedimiento con una lista de parámetros que tome una matriz unidimensional para la matriz de parámetros. Sin embargo, puede utilizar las firmas de las otras sobrecarga implícitas. Las siguientes declaraciones ilustran este comportamiento:

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

En las versiones sobrecargadas, el código no tiene que comprobar si el código de llamada proporciona uno o varios valores para el parámetro ParamArray , pero si lo hace, no tiene que comprobar cuántos valores proporciona. Visual Basic transfiere el control a la versión correspondiente a la lista de argumentos de llamada.

Compilar el código

Como un procedimiento con un parámetro ParamArray es equivalente a un conjunto de versiones sobrecargadas, no puede sobrecargar un procedimiento de este tipo con una lista de parámetros que se corresponda con alguna de estas sobrecargas implícitas. Para obtener más información, vea Consideraciones sobre la sobrecarga de procedimientos.

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 la longitud de la matriz que transfiere el código de llamada y tomar las medidas apropiadas si es demasiado grande para la aplicación.

Vea también

Tareas

Procedimientos de solución de problemas

Cómo: Definir varias versiones de un procedimiento

Cómo: Llamar a un procedimiento sobrecargado

Cómo: Sobrecargar un procedimiento que toma parámetros opcionales

Conceptos

Procedimientos en Visual Basic

Argumentos y parámetros de procedimiento

Parámetros opcionales

Matrices de parámetros

Sobrecarga de procedimientos

Resolución de sobrecargas