Procedure: Een procedure overbelasten die optionele parameters gebruikt (Visual Basic)
Als een procedure een of meer optionele parameters bevat, kunt u geen overbelaste versie definiëren die overeenkomt met een van de impliciete overbelastingen. Zie 'Impliciete overbelastingen voor optionele parameters' in overwegingen bij overbelastingsprocedures voor meer informatie.
Eén optionele parameter
Een procedure overbelasten waarvoor één optionele parameter nodig is
Schrijf een of
Function
declaratie-instructieSub
die de optionele parameter in de lijst met parameters bevat. Gebruik hetOptional
trefwoord niet in deze overbelaste versie.Voorafgaan aan het
Sub
ofFunction
trefwoord met het trefwoord Overloads .Schrijf de procedurecode die moet worden uitgevoerd wanneer de aanroepende code het optionele argument levert.
Beëindig de procedure met de
End Sub
ofEnd Function
instructie indien van toepassing.Schrijf een tweede declaratie-instructie die identiek is aan de eerste declaratie, behalve dat deze niet de optionele parameter in de parameterlijst bevat.
Schrijf de procedurecode die moet worden uitgevoerd wanneer de aanroepcode het optionele argument niet levert. Beëindig de procedure met de
End Sub
ofEnd Function
instructie indien van toepassing.In het volgende voorbeeld ziet u een procedure die is gedefinieerd met een optionele parameter, een equivalente set van twee overbelaste procedures en tot slot voorbeelden van ongeldige en geldige overbelaste versies.
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)
Meerdere optionele parameters
Voor een procedure met meer dan één optionele parameter hebt u normaal gesproken meer dan twee overbelaste versies nodig. Als er bijvoorbeeld twee optionele parameters zijn en de aanroepende code elk afzonderlijk van de andere kan leveren of weglaten, hebt u vier overbelaste versies nodig, één voor elke mogelijke combinatie van opgegeven argumenten.
Naarmate het aantal optionele parameters toeneemt, neemt de complexiteit van de overbelasting toe. Tenzij bepaalde combinaties van opgegeven argumenten niet acceptabel zijn, hebt u voor N optionele parameters 2 ^ N overbelaste versies nodig. Afhankelijk van de aard van de procedure kan het zijn dat de duidelijkheid van logica de extra inspanning rechtvaardigt om alle overbelaste versies te definiëren.
Een procedure overbelasten waarvoor meer dan één optionele parameter nodig is
Bepaal welke combinaties van opgegeven optionele argumenten acceptabel zijn voor de logica van de procedure. Er kan een onacceptabele combinatie ontstaan als één optionele parameter afhankelijk is van een andere. Als een parameter bijvoorbeeld de naam van een persoon accepteert en een andere parameter de leeftijd van de persoon accepteert, is een combinatie van argumenten die de leeftijd opgeven maar de naam weglaat onaanvaardbaar.
Schrijf voor elke acceptabele combinatie van opgegeven optionele argumenten een
Sub
ofFunction
declaratie-instructie die de bijbehorende parameterlijst definieert. Gebruik hetOptional
trefwoord niet.In elke declaratie gaat u vooraf aan het
Sub
ofFunction
trefwoord met het trefwoord Overloads .Schrijf na elke declaratie de procedurecode die moet worden uitgevoerd wanneer de aanroepende code een lijst met argumenten levert die overeenkomt met de parameterlijst van die declaratie.
Beëindig elke procedure met de
End Sub
ofEnd Function
instructie indien van toepassing.
Zie ook
- Procedures
- Procedureparameters en argumenten
- Optionele parameters
- Parametermatrices
- Overbelasting van procedure
- Procedures voor probleemoplossing
- Procedure: Meerdere versies van een procedure definiëren
- Procedure: Een overbelaste procedure aanroepen
- Procedure: Een procedure overbelasten waarvoor een onbeperkt aantal parameters nodig is
- Oplossing van overbelasting