Cómo: Sobrecargar un procedimiento que toma parámetros opcionales (Visual Basic)

Si un procedimiento tiene uno o varios parámetros opcionales, no se puede definir una versión sobrecargada que coincida con cualquiera 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 use la palabra clave Optional en esta versión sobrecargada.

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

  3. Escriba el código del procedimiento que se debe ejecutar 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 idéntica a la primera declaración, salvo que no incluya el parámetro opcional en la lista de parámetros.

  6. Escriba el código del procedimiento que se debe ejecutar 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 no válidas y 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 más de un parámetro opcional normalmente se necesitan 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 independientemente del otro, necesita cuatro versiones sobrecargadas, una para cada posible combinación de argumentos proporcionados.

A medida que aumenta el número de parámetros opcionales, aumenta la complejidad de la sobrecarga. A menos que algunas combinaciones de argumentos proporcionados no sean aceptables, para N parámetros opcionales necesita 2 ^ N versiones sobrecargadas. En función de la naturaleza del procedimiento, es posible que observe que la claridad de la lógica justifica el esfuerzo adicional de definir todas las versiones sobrecargadas.

Para sobrecargar un procedimiento que toma más de un parámetro opcional

  1. Determine qué combinaciones de argumentos opcionales proporcionados son aceptables para la lógica del procedimiento. Puede surgir una combinación inaceptable si un parámetro opcional depende de otro. Por ejemplo, si un parámetro acepta el nombre de una persona y otro acepta la edad de la persona, una combinación de argumentos que proporcione la edad pero omita el nombre es inaceptable.

  2. En cada combinación aceptable de argumentos opcionales proporcionados, escriba una instrucción de declaración Sub o Function que defina la lista de parámetros correspondiente. No use la palabra clave Optional.

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

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

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

Consulte también