Compartir a través de


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

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

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

  1. Verifique que el procedimiento y la lógica de llamadas de código se benefician más de versiones sobrecargadas que de un parámetro ParamArray. Consulta «Sobrecargas y ParamArrays» en Consideraciones sobre procedimientos de sobrecarga.

  2. Determine qué números de valores proporcionados debe aceptar el procedimiento en la parte variable de la lista de parámetros. Esto puede incluir el caso de ningún valor y podría incluir el caso de una sola matriz unidimensional.

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

  4. En cada declaración, preceda la palabra clave Sub o Function con la palabra clave Overloads.

  5. Después de cada declaración, escriba el código de procedimiento que se debe ejecutar cuando el código de llamada proporciona valores correspondientes a la lista de parámetros de esa declaración.

  6. Finalice cada procedimiento 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, un conjunto equivalente de 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 se puede sobrecargar este procedimiento con una lista de parámetros que toma una matriz unidimensional para la matriz de parámetros. Sin embargo, puedes usar las firmas de las demás sobrecargas implícitas. Las siguientes declaraciones ilustran esto.

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

El código de las versiones sobrecargadas no tiene que probar si el código de llamada proporcionó uno o varios valores para el ParamArray parámetro, o si es así, cuántos. Visual Basic pasa el control a la versión que coincide con la lista de argumentos de llamada.

Compilación del código

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

Seguridad de .NET Framework

Cada vez que se trata de una matriz que puede ser indefinidamente grande, existe el riesgo de sobreponer cierta capacidad interna de la aplicación. Si aceptas una matriz de parámetros, debes comprobar la longitud de la matriz que el código de llamada le ha pasado, y tomar las medidas oportunas si es demasiado grande para tu aplicación.

Consulte también