Optionele parameters (Visual Basic)
U kunt opgeven dat een procedureparameter optioneel is en dat er geen argument hoeft te worden opgegeven wanneer de procedure wordt aangeroepen. Optionele parameters worden aangegeven door het Optional
trefwoord in de proceduredefinitie. De volgende regels zijn van toepassing:
Elke optionele parameter in de proceduredefinitie moet een standaardwaarde opgeven.
De standaardwaarde voor een optionele parameter moet een constante expressie zijn.
Elke parameter na een optionele parameter in de proceduredefinitie moet ook optioneel zijn.
De volgende syntaxis toont een proceduredeclaratie met een optionele parameter:
Sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Procedures aanroepen met optionele parameters
Wanneer u een procedure aanroept met een optionele parameter, kunt u kiezen of u het argument wilt opgeven. Als u dat niet doet, gebruikt de procedure de standaardwaarde die voor die parameter is gedeclareerd.
Wanneer u een of meer optionele argumenten weglaat in de lijst met argumenten, gebruikt u opeenvolgende komma's om hun posities te markeren. In het volgende voorbeeld worden de eerste en vierde argumenten geleverd, maar niet de tweede of derde:
Sub name(argument 1, , , argument 4)
In het volgende voorbeeld worden verschillende aanroepen naar de MsgBox
functie uitgevoerd. MsgBox
heeft één vereiste parameter en twee optionele parameters.
De eerste aanroep om alle drie de argumenten op te MsgBox
geven in de volgorde waarin MsgBox
deze worden gedefinieerd. De tweede aanroep levert alleen het vereiste argument. De derde en vierde aanroepen leveren de eerste en derde argumenten op. De derde aanroep doet dit op positie en de vierde aanroep doet dit op naam.
MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")
Bepalen of een optioneel argument aanwezig is
Een procedure kan tijdens de uitvoering niet detecteren of een bepaald argument is weggelaten of dat de aanroepende code expliciet de standaardwaarde heeft opgegeven. Als u dit onderscheid wilt maken, kunt u een onwaarschijnlijke waarde instellen als de standaardwaarde. De volgende procedure definieert de optionele parameter office
en test de standaardwaarde om QJZ
te zien of deze is weggelaten in de aanroep:
Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
If office = "QJZ" Then
Debug.WriteLine("office not supplied -- using Headquarters")
office = "Headquarters"
End If
' Insert code to notify headquarters or specified office.
End Sub
Als de optionele parameter een verwijzingstype is, zoals een String
, kunt u gebruiken Nothing
als de standaardwaarde, mits dit geen verwachte waarde voor het argument is.
Optionele parameters en overbelasting
Een andere manier om een procedure met optionele parameters te definiëren, is door overbelasting te gebruiken. Als u één optionele parameter hebt, kunt u twee overbelaste versies van de procedure definiëren, één die de parameter accepteert en één zonder de parameter. Deze benadering wordt ingewikkelder naarmate het aantal optionele parameters toeneemt. Het voordeel is echter dat u absoluut zeker weet of het aanroepende programma elk optioneel argument heeft opgegeven.