Compartir vía


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 puedes definir una versión sobrecargada que tome una matriz unidimensional para la matriz de parámetros. Para obtener más información, consulta «Sobrecargas implícitas para parámetros opcionales» en Consideraciones sobre la sobrecarga de procedimientos.

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

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

  2. Determina qué números de valores proporcionados el procedimiento debe aceptar 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 uses ni la palabra clave Optional ni la ParamArray en esta versión sobrecargada.

  4. En cada declaración, antepón a la palabra clave Sub o Function la palabra clave Sobrecarga.

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

  6. Finaliza 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.

Compilar el código

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

Seguridad de .NET Framework

Siempre que se trata con una matriz que puede ser indefinidamente grande, existe el riesgo de invalidar alguna 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