Egenskapsprocedurer (Visual Basic)
En egenskapsprocedur är en serie Visual Basic-instruktioner som manipulerar en anpassad egenskap i en modul, klass eller struktur. Egenskapsprocedurer kallas även för egenskapsåtkomster.
Visual Basic tillhandahåller följande egenskapsprocedurer:
- En
Get
procedur returnerar värdet för en egenskap. Den anropas när du kommer åt egenskapen i ett uttryck. - En
Set
procedur anger en egenskap till ett värde, inklusive en objektreferens. Det anropas när du tilldelar egenskapen ett värde.
Du definierar vanligtvis egenskapsprocedurer i par med hjälp av instruktionen och, men du kan definiera procedur ensam om egenskapen är skrivskyddad (Hämta instruktion) eller skrivskyddad (Ange instruktion).Set
Get
Du kan utelämna proceduren Get
och Set
när du använder en automatiskt implementerad egenskap. Mer information finns i Auto-Implemented Properties (Automatiskt implementerade egenskaper).
Du kan definiera egenskaper i klasser, strukturer och moduler. Egenskaper är Public
som standard, vilket innebär att du kan anropa dem var som helst i ditt program som kan komma åt egenskapens container.
En jämförelse av egenskaper och variabler finns i Skillnader mellan egenskaper och variabler i Visual Basic.
Deklarationssyntax
En egenskap definieras av ett kodblock som omges av egenskapsutdraget och -instruktionenEnd Property
. I det här blocket visas varje egenskapsprocedur som ett internt block som omges av en deklarationsuttryck (Get
eller Set
) och matchande End
deklaration.
Syntaxen för att deklarera en egenskap och dess procedurer är följande:
[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]
Modifiers
Kan ange åtkomstnivå och information om överlagring, åsidosättande, delning och skuggning, samt om egenskapen är skrivskyddad eller skrivskyddad. Proceduren AccessLevel
Get
på eller Set
kan vara en nivå som är mer restriktiv än den åtkomstnivå som angetts för själva egenskapen. Mer information finns i Egenskapsinstrukation.
Datatyp
En egenskaps datatyp och huvudåtkomstnivå definieras i -instruktionen Property
, inte i egenskapsprocedurerna. En egenskap kan bara ha en datatyp. Du kan till exempel inte definiera en egenskap för att lagra ett Decimal
värde men hämta ett Double
värde.
Åtkomstnivå
Du kan dock definiera en huvudåtkomstnivå för en egenskap och ytterligare begränsa åtkomstnivån i någon av dess egenskapsprocedurer. Du kan till exempel definiera en Public
egenskap och sedan definiera en Private Set
procedur. Proceduren Get
förblir Public
. Du kan bara ändra åtkomstnivån i en av en egenskaps procedurer och du kan bara göra den mer restriktiv än huvudåtkomstnivån. Mer information finns i Så här deklarerar du en egenskap med blandade åtkomstnivåer.
Parameterdeklaration
Du deklarerar varje parameter på samma sätt som för underprocedurer, förutom att överföringsmekanismen måste vara ByVal
.
Syntaxen för varje parameter i parameterlistan är följande:
[Optional] ByVal [ParamArray] parametername As datatype
Om parametern är valfri måste du också ange ett standardvärde som en del av deklarationen. Syntaxen för att ange ett standardvärde är följande:
Optional ByVal parametername As datatype = defaultvalue
Egenskapsvärde
I en Get
procedur anges returvärdet till det anropande uttrycket som värdet för egenskapen.
I en Set
procedur skickas det nya egenskapsvärdet till parametern för -instruktionen Set
. Om du uttryckligen deklarerar en parameter måste du deklarera den med samma datatyp som egenskapen. Om du inte deklarerar en parameter använder kompilatorn den implicita parametern Value
för att representera det nya värdet som ska tilldelas egenskapen.
Anropande syntax
Du anropar en egenskapsprocedur implicit genom att referera till egenskapen. Du använder namnet på egenskapen på samma sätt som du använder namnet på en variabel, förutom att du måste ange värden för alla argument som inte är valfria, och du måste omsluta argumentlistan inom parenteser. Om inga argument anges kan du utelämna parenteserna.
Syntaxen för ett implicit anrop till en Set
procedur är följande:
propertyname[(argumentlist)] = expression
Syntaxen för ett implicit anrop till en Get
procedur är följande:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Bild av deklaration och anrop
Följande egenskap lagrar ett fullständigt namn som två komponentnamn, förnamnet och efternamnet. När den anropande koden läser kombinerar fullName
proceduren Get
de två komponentnamnen och returnerar det fullständiga namnet. När den anropande koden tilldelar ett nytt fullständigt namn försöker proceduren Set
dela upp det i två komponentnamn. Om det inte hittar något utrymme lagras allt som förnamn.
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
I följande exempel visas vanliga anrop till egenskapsprocedurerna fullName
för :
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Se även
- Förfaranden
- Funktionsprocedurer
- Operatorprocedurer
- Procedureparametrar och argument
- Skillnader mellan egenskaper och variabler i Visual Basic
- Gör så här: Skapa en egenskap
- Anvisningar: Anropa en egenskapsprocedur
- Så här deklarerar och anropar du en standardegenskap i Visual Basic
- Gör så här: Placera ett värde i en egenskap
- Anvisningar: Hämta ett värde från en egenskap