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

Actualización: noviembre 2007

Si un procedimiento tiene uno o varios parámetros Optional (Visual Basic), no se puede definir ninguna versión sobrecargada que se corresponda con alguna de sus sobrecargas implícitas. Para obtener más información, vea "Sobrecargas implícitas para parámetros opcionales" en Consideraciones sobre la sobrecarga de procedimientos.

Un parámetro opcional

Para sobrecargar un procedimiento que toma un parámetro opcional

  1. Escriba una instrucción de declaración Sub o Function que incluya el parámetro opcional en la lista de parámetros. No utilice la palabra clave Optional en esta versión sobrecargada.

  2. Anteponga la palabra clave Overloads a la palabra clave Sub o Function.

  3. Escriba el código de procedimiento que debería ejecutarse cuando el código de llamada proporcione el argumento opcional.

  4. Finalice el procedimiento con la instrucción End Sub o End Function, según corresponda.

  5. Escriba una segunda instrucción de declaración que sea idéntica a la primera salvo porque no debe incluir el parámetro opcional en la lista de parámetros.

  6. Escriba el código de procedimiento que debería ejecutarse cuando el código de llamada no proporcione el argumento opcional. Finalice el procedimiento con la instrucción End Sub o End Function, según corresponda.

    En el ejemplo siguiente se muestra un procedimiento definido con un parámetro opcional, un conjunto equivalente de dos procedimientos sobrecargados y, por último, ejemplos de versiones sobrecargadas válidas y no válidas.

    Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
    
    ' The preceding definition is equivalent to the following two overloads.
    ' Overloads Sub q(ByVal b As Byte)
    ' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
    
    ' Therefore, the following overload is not valid because the signature is already in use.
    ' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
    ' The following overload uses a different signature and is valid.
    Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)
    

Varios parámetros opcionales

En un procedimiento con varios parámetros opcionales, normalmente son necesarias más de dos versiones sobrecargadas. Por ejemplo, si hay dos parámetros opcionales y el código de llamada puede proporcionar u omitir cada uno de ellos con independencia del otro, serán necesarias cuatro versiones sobrecargadas, una por cada combinación posible de los argumentos proporcionados.

Como el número de parámetros opcionales aumenta, también se incrementa la complejidad de la sobrecarga. A menos que algunas combinaciones de los argumentos proporcionados no sean aceptables, para N parámetros opcionales necesitará 2 ^ N versiones sobrecargadas. Dependiendo de la naturaleza del procedimiento, quizás considere que la claridad de la lógica podría justificar el esfuerzo adicional que supone definir todas las versiones sobrecargadas.

Para sobrecargar un procedimiento que toma varios parámetros opcionales

  1. Determine qué combinaciones de los argumentos opcionales proporcionados son aceptables en la lógica del procedimiento. Podría generarse una combinación inaceptable si un parámetro opcional dependiera de otro. Por ejemplo, si un parámetro acepta el nombre del cónyuge y otro acepta la edad del cónyuge, una combinación de argumentos que proporcione la edad pero omita el nombre sería inaceptable.

  2. Para cada combinación aceptable de los argumentos opcionales 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.

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

  4. Después de cada declaración, escriba el código del procedimiento que debería ejecutarse cuando el código de llamada proporcione una lista de argumentos que se corresponda con la lista de parámetros de esa declaración.

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

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 un número indefinido de parámetros

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