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
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.
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.
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.
En cada declaración, anteponga la palabra clave Overloads a la palabra clave Sub o Function.
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.
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