Gedeeltelijke methoden (Visual Basic)
Met gedeeltelijke methoden kunnen ontwikkelaars aangepaste logica invoegen in code. Normaal gesproken maakt de code deel uit van een door de ontwerper gegenereerde klasse. Gedeeltelijke methoden worden gedefinieerd in een gedeeltelijke klasse die wordt gemaakt door een codegenerator en worden vaak gebruikt om een melding te geven dat er iets is gewijzigd. Ze stellen de ontwikkelaar in staat om aangepast gedrag op te geven als reactie op de wijziging.
De ontwerpfunctie van de codegenerator definieert alleen de handtekening van de methode en een of meer aanroepen naar de methode. Ontwikkelaars kunnen vervolgens implementaties voor de methode bieden als ze het gedrag van de gegenereerde code willen aanpassen. Wanneer er geen implementatie is opgegeven, worden aanroepen naar de methode verwijderd door de compiler, wat resulteert in geen extra prestatieoverhead.
Verklaring
De gegenereerde code markeert de definitie van een gedeeltelijke methode door het trefwoord Partial
aan het begin van de handtekeningregel te plaatsen.
Partial Private Sub QuantityChanged()
End Sub
De definitie moet voldoen aan de volgende voorwaarden:
De methode moet een
Sub
, niet eenFunction
.De hoofdtekst van de methode moet leeg blijven.
De toegangsaanpassing moet zijn
Private
.
Implementatie
De implementatie bestaat voornamelijk uit het invullen van het lichaam van de gedeeltelijke methode. De implementatie bevindt zich doorgaans in een afzonderlijke gedeeltelijke klasse van de definitie en wordt geschreven door een ontwikkelaar die de gegenereerde code wil uitbreiden.
Private Sub QuantityChanged()
' Code for executing the desired action.
End Sub
In het vorige voorbeeld wordt de handtekening in de declaratie exact gedupliceerd, maar er zijn variaties mogelijk. In het bijzonder kunnen andere modifiers worden toegevoegd, zoals Overloads
of Overrides
. Er is slechts één Overrides
wijzigingsfunctie toegestaan. Zie Subinstructie voor meer informatie over methodeaanpassingen.
Gebruik
U roept een gedeeltelijke methode aan zoals u een andere Sub
procedure zou aanroepen. Als de methode is geïmplementeerd, worden de argumenten geëvalueerd en wordt de hoofdtekst van de methode uitgevoerd. Houd er echter rekening mee dat het implementeren van een gedeeltelijke methode optioneel is. Als de methode niet is geïmplementeerd, heeft een aanroep ervan geen effect en worden expressies die als argumenten aan de methode worden doorgegeven, niet geëvalueerd.
Opmerking
Definieer in een bestand met de naam Product.Designer.vb een Product
klasse met een Quantity
eigenschap.
Partial Class Product
Private _Quantity As Integer
Property Quantity() As Integer
Get
Return _Quantity
End Get
Set(ByVal value As Integer)
_Quantity = value
QuantityChanged()
End Set
End Property
' Provide a signature for the partial method.
Partial Private Sub QuantityChanged()
End Sub
End Class
Geef in een bestand met de naam Product.vb een implementatie voor QuantityChanged
.
Partial Class Product
Private Sub QuantityChanged()
MsgBox("Quantity was changed to " & Me.Quantity)
End Sub
End Class
Declareer ten slotte in de hoofdmethode van een project een Product
exemplaar en geef een initiële waarde op voor de Quantity
eigenschap.
Module Module1
Sub Main()
Dim product1 As New Product With {.Quantity = 100}
End Sub
End Module
Er moet een berichtvak worden weergegeven waarin dit bericht wordt weergegeven:
Quantity was changed to 100