Eigenschaftenprozeduren (Visual Basic)
Bei einer Eigenschaftenprozedur handelt es sich um eine Reihe von Visual Basic-Anweisungen zum Ändern von benutzerdefinierten Eigenschaften in Modulen, Klassen oder Strukturen. Property-Prozeduren werden auch als Eigenschaften-Accessoren bezeichnet.
Visual Basic enthält die folgenden Eigenschaftenprozeduren:
Die Get-Prozedur gibt den Wert einer Eigenschaft zurück. Sie wird aufgerufen, wenn Sie in einem Ausdruck auf die Eigenschaft zugreifen.
Eine Set-Prozedur legt eine Eigenschaft auf einen Wert fest; hierzu gehören auch Objektverweise. Sie wird aufgerufen, wenn Sie der Eigenschaft einen Wert zuweisen.
In der Regel werden Eigenschaftenprozeduren paarweise mit den Anweisungen Get und Set definiert. Sie können jedoch jede der beiden Eigenschaften einzeln definieren, wenn die Eigenschaft schreibgeschützt (Get-Anweisung) oder lesegeschützt (Set-Anweisung (Visual Basic)) ist.
Eigenschaften können in Modulen, Klassen und Strukturen definiert werden. Eigenschaften sind standardmäßig Public; d. h., Sie können sie in Ihrer Anwendung, die auf den Container der Eigenschaft zugreifen kann, von einer beliebigen Stelle aus aufrufen.
Einen Vergleich von Eigenschaften und Variablen finden Sie unter Unterschiede zwischen Eigenschaften und Variablen in Visual Basic.
Deklarationssyntax
Eine Eigenschaft selbst wird als zwischen der Property-Anweisung und der End Property-Anweisung stehender Codeblock definiert. Innerhalb dieses Blocks wird jede Eigenschaftenprozedur als interner, zwischen einer Deklarationsanweisung (Get oder Set) und der entsprechenden End-Deklaration stehender Block angezeigt.
Die Syntax zur Deklaration einer Eigenschaft und ihrer Prozeduren lautet wie folgt:
[Default] [modifiers] Property propertyname[(parameterlist)] As datatype
[accesslevel] Get
' Statements of the Get procedure.
' The following statement returns 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
Die modifiers können die Zugriffsebene und Informationen zum Überladen, Überschreiben, Freigeben und Shadowing angeben und spezifizieren, ob die Eigenschaft schreibgeschützt oder lesegeschützt ist. Als access level für die Get-Prozedur oder die Set-Prozedur kann jede Ebene verwendet werden, die restriktiver ist als die für die Eigenschaft selbst festgelegte Zugriffsebene. Weitere Informationen finden Sie unter Property-Anweisung.
Datentyp
Der Datentyp einer Eigenschaft und die Hauptzugriffsebene werden in der Property-Anweisung definiert, nicht in den Eigenschaftenprozeduren. Eine Eigenschaft kann nur einem Datentyp angehören. Wenn Sie z. B. eine Eigenschaft definieren, die einen Decimal-Wert speichert, kann kein Double-Wert abgerufen werden.
Zugriffsebene
Sie können jedoch eine Hauptzugriffsebene für eine Eigenschaft definieren und die Zugriffsebene in einer der Eigenschaftenprozeduren weiter einschränken. Beispielsweise können Sie eine Public-Eigenschaft definieren und anschließend eine Private Set-Prozedur. Die Get-Prozedur bleibt Public. Sie können die Zugriffsebene in nur einer der Prozeduren einer Eigenschaft ändern. Die geänderte Zugriffsebene kann allerdings nur restriktiver sein als die Hauptzugriffsebene. Weitere Informationen finden Sie unter Gewusst wie: Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen (Visual Basic).
Parameterdeklaration
Jeder Parameter wird auf die gleiche Weise deklariert wie bei Sub-Prozeduren (Visual Basic), nur für den Übergabemechanismus muss ByVal verwendet werden.
Die Syntax für jeden Parameter in der Parameterliste lautet folgendermaßen:
[Optional] ByVal [ParamArray] parametername As datatype
Wenn der Parameter optional ist, müssen Sie bei seiner Deklaration auch einen Standardwert angeben. Die Syntax zur Angabe eines Standardwerts lautet folgendermaßen:
Optional ByVal parametername As datatype = defaultvalue
Eigenschaftswert
In Get-Prozeduren wird dem Aufrufausdruck der Rückgabewert als Wert der Eigenschaft bereitgestellt.
In Set-Prozeduren wird der neue Eigenschaftswert dem Parameter der Set-Anweisung übergeben. Ein explizit deklarierter Parameter muss mit dem gleichen Datentyp deklariert werden wie die zugehörige Eigenschaft. Wenn kein Parameter deklariert wird, stellt der Compiler den neuen Wert, der der Eigenschaft zugewiesen werden soll, mit dem impliziten Value-Parameter dar.
Aufrufsyntax
Eine Eigenschaftenprozedur wird durch einen Verweis auf die Eigenschaft implizit aufgerufen. Sie verwenden den Namen der Eigenschaft wie den Namen einer Variablen. Allerdings müssen Sie Werte für alle nicht optionalen Argumente angeben und die Argumentliste in Klammern setzen. Wenn keine Argumente angegeben werden, können Sie die Klammern auch weglassen.
Die Syntax für einen impliziten Aufruf einer Set-Prozedur lautet wie folgt:
propertyname[(argumentlist)] = expression
Die Syntax für einen impliziten Aufruf einer Get-Prozedur lautet wie folgt:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Darstellung von Deklaration und Aufruf
Die folgende Eigenschaft speichert einen vollständigen Namen als zwei konstituierende Namen, den Vornamen und den Nachnamen. Wenn der Aufrufcode fullName liest, kombiniert die Get-Prozedur die beiden konstituierenden Namen und gibt den vollständigen Namen zurück. Wenn der Aufrufcode einen neuen vollständigen Namen zuweist, versucht die Set-Prozedur, den Namen in zwei konstituierende Namen aufzulösen. Wird kein Leerzeichen gefunden, wird der gesamte Name als Vorname gespeichert.
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
Im folgenden Beispiel werden typische Aufrufe der Eigenschaftenprozeduren von fullName dargestellt.
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Siehe auch
Aufgaben
Gewusst wie: Erstellen einer Eigenschaft (Visual Basic)
Gewusst wie: Aufrufen einer Eigenschaftenprozedur (Visual Basic)
Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic
Gewusst wie: Ablegen eines Werts in eine Eigenschaft (Visual Basic)
Gewusst wie: Abrufen eines Werts aus einer Eigenschaft (Visual Basic)
Konzepte
Function-Prozeduren (Visual Basic)
Operatorprozeduren (Visual Basic)
Parameter und Argumente von Prozeduren (Visual Basic)
Unterschiede zwischen Eigenschaften und Variablen in Visual Basic