Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Overbelasting van een procedure betekent dat u deze in meerdere versies definieert met dezelfde naam, maar met verschillende parameterlijsten. Het doel van overbelasting is om verschillende nauw gerelateerde versies van een procedure te definiëren zonder deze op naam te hoeven onderscheiden. U doet dit door de lijst met parameters te variëren.
Regels voor overbelasting
Wanneer u een procedure overbelast, zijn de volgende regels van toepassing:
Dezelfde naam. Elke overbelaste versie moet dezelfde procedurenaam gebruiken.
Andere handtekening. Elke overbelaste versie moet verschillen van alle andere overbelaste versies in ten minste één van de volgende opzichten:
Aantal parameters
Volgorde van de parameters
Gegevenstypen van de parameters
Aantal typeparameters (voor een algemene procedure)
Retourtype (alleen voor een conversieoperator)
Samen met de naam van de procedure worden de voorgaande items gezamenlijk de handtekening van de procedure genoemd. Wanneer u een overbelaste procedure aanroept, gebruikt de compiler de handtekening om te controleren of de aanroep juist overeenkomt met de definitie.
Items die geen deel uitmaken van de handtekening. U kunt een procedure niet overbelasten zonder de handtekening te variëren. In het bijzonder kunt u een procedure niet overbelasten door slechts een of meer van de volgende items te variëren:
Procedureaanpassingstrefwoorden, zoals
Public
,Shared
enStatic
Parameter- of typeparameternamen
Parameterbeperkingen typen (voor een algemene procedure)
Trefwoorden voor parameteraanpassing, zoals
ByRef
enOptional
Of deze een waarde retourneert
Het gegevenstype van de retourwaarde (met uitzondering van een conversieoperator)
De items in de voorgaande lijst maken geen deel uit van de handtekening. Hoewel u ze niet kunt gebruiken om onderscheid te maken tussen overbelaste versies, kunt u ze variëren tussen overbelaste versies die op de juiste manier worden onderscheiden door hun handtekeningen.
Late-Bound argumenten. Als u van plan bent om een te laat gebonden objectvariabele door te geven aan een overbelaste versie, moet u de juiste parameter declareren als Object.
Meerdere versies van een procedure
Stel dat u een procedure schrijft om een Sub
transactie te posten op basis van het saldo van een klant en dat u wilt kunnen verwijzen naar de klant op naam of op rekeningnummer. Hiervoor kunt u twee verschillende Sub
procedures definiëren, zoals in het volgende voorbeeld:
Sub postName(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Overbelaste versies
Een alternatief is het overbelasten van één procedurenaam. U kunt het trefwoord Overloads als volgt gebruiken om een versie van de procedure voor elke parameterlijst te definiëren:
Overloads Sub post(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Extra overbelastingen
Als u ook een transactiebedrag in zowel Decimal
als Single
wilt accepteren, kunt u post
verder overbelasten om deze variatie mogelijk te maken. Als u dit hebt gedaan voor elk van de overbelastingen in het vorige voorbeeld, zou u vier Sub
procedures hebben, allemaal met dezelfde naam, maar met vier verschillende handtekeningen.
Voordelen van overloaden
Het voordeel van overbelasting van een procedure is in de flexibiliteit van het gesprek. Als u de post
procedure wilt gebruiken die in het voorgaande voorbeeld is gedeclareerd, kan de aanroepende code de klantidentificatie verkrijgen als een String
of een Integer
, en vervolgens dezelfde procedure aanroepen in beide gevallen. In het volgende voorbeeld ziet u dit:
Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
accountNum = CInt(customer)
Call post(accountNum, amount)
Catch
Call post(customer, amount)
End Try
Zie ook
- Procedures
- Hoe: Meerdere versies van een procedure definiëren
- Hoe een overladen procedure aan te roepen
- Procedure: Een procedure overbelasten waarvoor optionele parameters
- Handleiding: Een procedure overbeladen die een onbeperkt aantal parameters accepteert
- Overwegingen bij Overbelastingsprocedures
- Oplossing van overbelasting
- overbelastingen
- Algemene typen in Visual Basic