Eigenschapsprocedures (Visual Basic)
Een eigenschapsprocedure is een reeks Visual Basic-instructies waarmee een aangepaste eigenschap in een module, klasse of structuur wordt bewerkt. Eigenschapsprocedures worden ook wel eigenschapstoegangsors genoemd.
Visual Basic biedt de volgende eigenschapsprocedures:
- Een
Get
procedure retourneert de waarde van een eigenschap. Deze wordt aangeroepen wanneer u toegang krijgt tot de eigenschap in een expressie. - Met
Set
een procedure wordt een eigenschap ingesteld op een waarde, inclusief een objectverwijzing. Deze wordt aangeroepen wanneer u een waarde aan de eigenschap toewijst.
Meestal definieert u eigenschapsprocedures in paren, met behulp van de Get
en Set
instructies, maar u kunt een van beide procedures alleen definiëren als de eigenschap alleen-lezen is (Get-instructie) of alleen-schrijven (set-instructie).
U kunt de Get
en Set
procedure weglaten wanneer u een automatisch geïmplementeerde eigenschap gebruikt. Zie Eigenschappen automatisch geïmplementeerd voor meer informatie.
U kunt eigenschappen definiëren in klassen, structuren en modules. Eigenschappen zijn Public
standaard, wat betekent dat u ze overal in uw toepassing kunt aanroepen die toegang hebben tot de container van de eigenschap.
Zie Verschillen tussen eigenschappen en variabelen in Visual Basic voor een vergelijking van eigenschappen en variabelen.
Syntaxis van declaratie
Een eigenschap zelf wordt gedefinieerd door een codeblok dat is ingesloten in de eigenschapsinstructie en de End Property
instructie. In dit blok wordt elke eigenschapsprocedure weergegeven als een intern blok dat is ingesloten in een declaratie-instructie (Get
of Set
) en de overeenkomende End
declaratie.
De syntaxis voor het declareren van een eigenschap en de bijbehorende procedures is als volgt:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Het Modifiers
kan toegangsniveau en informatie opgeven met betrekking tot overbelasting, overschrijven, delen en schaduwen, en of de eigenschap alleen-lezen of alleen-schrijven is. Het AccessLevel
niveau of Set
de Get
procedure kan elk niveau zijn dat meer beperkend is dan het toegangsniveau dat is opgegeven voor de eigenschap zelf. Zie Eigenschapsinstructie voor meer informatie.
Gegevenstype
Het gegevenstype en het principal-toegangsniveau van een eigenschap worden gedefinieerd in de Property
instructie, niet in de eigenschapsprocedures. Een eigenschap kan slechts één gegevenstype hebben. U kunt bijvoorbeeld geen eigenschap definiëren om een Decimal
waarde op te slaan, maar een Double
waarde op te halen.
Toegangsniveau
U kunt echter een principal-toegangsniveau voor een eigenschap definiëren en het toegangsniveau verder beperken in een van de eigenschappenprocedures. U kunt bijvoorbeeld een Public
eigenschap definiëren en vervolgens een Private Set
procedure definiëren. De Get
procedure blijft Public
bestaan. U kunt het toegangsniveau in slechts één van de procedures van een eigenschap wijzigen en u kunt het alleen beperkend maken dan het principal-toegangsniveau. Zie Een eigenschap met gemengde toegangsniveaus declareren voor meer informatie.
Parameterdeclaratie
U declareert elke parameter op dezelfde manier als voor subprocedures, behalve dat het doorgegeven mechanisme moet zijn ByVal
.
De syntaxis voor elke parameter in de lijst met parameters is als volgt:
[Optional] ByVal [ParamArray] parametername As datatype
Als de parameter optioneel is, moet u ook een standaardwaarde opgeven als onderdeel van de declaratie. De syntaxis voor het opgeven van een standaardwaarde is als volgt:
Optional ByVal parametername As datatype = defaultvalue
Eigenschapwaarde
In een Get
procedure wordt de retourwaarde als de waarde van de eigenschap aan de aanroepende expressie opgegeven.
In een Set
procedure wordt de nieuwe eigenschapswaarde doorgegeven aan de parameter van de Set
instructie. Als u een parameter expliciet declareert, moet u deze declareren met hetzelfde gegevenstype als de eigenschap. Als u geen parameter declareert, gebruikt de compiler de impliciete parameter Value
om de nieuwe waarde weer te geven die aan de eigenschap moet worden toegewezen.
Aanroepende syntaxis
U roept impliciet een eigenschapsprocedure aan door te verwijzen naar de eigenschap. U gebruikt de naam van de eigenschap op dezelfde manier als de naam van een variabele, behalve dat u waarden moet opgeven voor alle argumenten die niet optioneel zijn en u moet de lijst met argumenten tussen haakjes zetten. Als er geen argumenten worden opgegeven, kunt u eventueel de haakjes weglaten.
De syntaxis voor een impliciete aanroep van een Set
procedure is als volgt:
propertyname[(argumentlist)] = expression
De syntaxis voor een impliciete aanroep van een Get
procedure is als volgt:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Afbeelding van declaratie en aanroep
In de volgende eigenschap wordt een volledige naam opgeslagen als twee samenstellende namen, de voornaam en de achternaam. Wanneer de aanroepende fullName
code wordt gelezen, worden de Get
twee samenstellende namen gecombineerd en wordt de volledige naam geretourneerd. Wanneer de aanroepende code een nieuwe volledige naam toewijst, probeert de Set
procedure deze op te splitsen in twee samenstellende namen. Als er geen spatie wordt gevonden, wordt deze allemaal opgeslagen als de voornaam.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
In het volgende voorbeeld ziet u typische aanroepen naar de eigenschapsprocedures van fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Zie ook
- Procedures
- Functieprocedures
- Operatorprocedures
- Procedureparameters en argumenten
- Verschillen tussen eigenschappen en variabelen in Visual Basic
- Procedure: Een eigenschap maken
- Procedure: Een eigenschapsprocedure aanroepen
- Procedure: Een standaardeigenschap declareren en aanroepen in Visual Basic
- Procedure: Een waarde in een eigenschap plaatsen
- Procedure: Een waarde ophalen uit een eigenschap