Anvisningar: Överbelasta en procedur som tar valfria parametrar (Visual Basic)
Om en procedur har en eller flera valfria parametrar kan du inte definiera en överbelastad version som matchar någon av dess implicita överlagringar. Mer information finns i "Implicita överlagringar för valfria parametrar" i Överväganden i överlagringsprocedurer.
En valfri parameter
Överbelasta en procedur som tar en valfri parameter
Skriv en
Sub
- ellerFunction
-deklarationssats som innehåller den valfria parametern i parameterlistan. Använd inte nyckelordetOptional
i den här överlagrade versionen.Före nyckelordet
Sub
ellerFunction
med nyckelordet Overloads .Skriv den procedurkod som ska köras när den anropande koden tillhandahåller det valfria argumentet.
Avsluta proceduren med instruktionen
End Sub
ellerEnd Function
efter behov.Skriv en andra deklarationssats som är identisk med den första deklarationen förutom att den inte innehåller den valfria parametern i parameterlistan.
Skriv den procedurkod som ska köras när den anropande koden inte anger det valfria argumentet. Avsluta proceduren med instruktionen
End Sub
ellerEnd Function
efter behov.I följande exempel visas en procedur som definierats med en valfri parameter, en motsvarande uppsättning med två överlagrade procedurer och slutligen exempel på både ogiltiga och giltiga överlagrade versioner.
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)
Flera valfria parametrar
För en procedur med mer än en valfri parameter behöver du normalt fler än två överlagrade versioner. Om det till exempel finns två valfria parametrar, och anropskoden kan ange eller utelämna var och en oberoende av den andra, behöver du fyra överlagrade versioner, en för varje möjlig kombination av angivna argument.
När antalet valfria parametrar ökar ökar överlagringens komplexitet. Om inte vissa kombinationer av angivna argument inte är acceptabla behöver du för valfria N-parametrar 2 ^ N överlagrade versioner. Beroende på procedurens art kan det bero på att logikens klarhet motiverar den extra ansträngningen att definiera alla överlagrade versioner.
Överbelasta en procedur som tar mer än en valfri parameter
Avgör vilka kombinationer av angivna valfria argument som är godtagbara för procedurens logik. En oacceptabel kombination kan uppstå om en valfri parameter är beroende av en annan. Om en parameter till exempel accepterar en persons namn och en annan accepterar personens ålder är en kombination av argument som anger åldern men utelämnar namnet oacceptabelt.
För varje acceptabel kombination av angivna valfria argument skriver du en
Sub
- ellerFunction
-deklarationsinstruktion som definierar motsvarande parameterlista. Använd inte nyckelordetOptional
.I varje deklaration föregår du nyckelordet
Sub
ellerFunction
med nyckelordet Överlagringar .Efter varje deklaration skriver du den procedurkod som ska köras när den anropande koden tillhandahåller en argumentlista som motsvarar den deklarationens parameterlista.
Avsluta varje procedur med instruktionen
End Sub
ellerEnd Function
efter behov.
Se även
- Förfaranden
- Procedureparametrar och argument
- Valfria parametrar
- Parametermatriser
- Överlagring av procedur
- Felsökningsprocedurer
- Anvisningar: Definiera flera versioner av en procedur
- Anvisningar: Anropa en överbelastad procedur
- Anvisningar: Överbelasta en procedur som tar ett obegränsat antal parametrar
- Överlagringsmatchning