Eigenschaftenprozeduren (Visual Basic)
Eine Eigenschaftsprozedur ist eine Reihe von Visual Basic-Anweisungen, die eine benutzerdefinierte Eigenschaft in einem Modul, einer Klasse oder einer Struktur bearbeiten. Eigenschaftsprozeduren werden auch als Eigenschaftsaccessoren bezeichnet.
Visual Basic stellt die folgenden Eigenschaftenprozeduren bereit:
- Eine
Get
-Prozedur gibt den Wert einer Eigenschaft zurück. Sie wird aufgerufen, wenn Sie auf die Eigenschaft in einem Ausdruck zugreifen. - Eine
Set
-Prozedur legt eine Eigenschaft auf einen Wert fest, einschließlich eines Objektverweises. Sie wird aufgerufen, wenn Sie der Eigenschaft einen Wert zuweisen.
In der Regel definieren Sie Eigenschaftsprozeduren mithilfe der Get
- und Set
-Anweisungen in Paaren, aber Sie können eine Prozedur allein definieren, wenn die Eigenschaft schreibgeschützt (Get-Anweisung) oder lesegeschützt (Set-Anweisung) ist.
Sie können die und Set
die Get
Prozedur bei Verwendung einer automatisch implementierten Eigenschaft weglassen. Weitere Informationen finden Sie unter Automatisch implementierte Eigenschaften.
Sie können Eigenschaften in Klassen, Strukturen und Modulen definieren. Eigenschaften sind standardmäßig Public
, was bedeutet, dass Sie sie von überall in der Anwendung aufrufen können, die auf den Container der Eigenschaft zugreifen kann.
Einen Vergleich von Eigenschaften und Variablen finden Sie unter Unterschiede zwischen Eigenschaften und Variablen in Visual Basic.
Deklarationssyntax
Eine Eigenschaft selbst wird durch einen Codeblock definiert, der in der Property-Anweisung und der End Property
-Anweisung eingeschlossen ist. Innerhalb dieses Blocks wird jede Eigenschaftsprozedur als interner Block angezeigt, der in eine Deklarationsanweisung (Get
oder Set
) und die entsprechende End
-Deklaration eingeschlossen ist.
Die Syntax zum Deklarieren einer Eigenschaft und der zugehörigen Prozeduren lautet wie folgt:
[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]
Die Modifiers
können die Zugriffsebene und Informationen zu Überladung, Außerkraftsetzung, Freigabe und Shadowing angeben sowie anzeigen, ob die Eigenschaft schreibgeschützt oder lesegeschützt ist. Das AccessLevel
für die Get
- oder Set
-Prozedur kann eine beliebige Ebene sein, die restriktiver ist als die für die Eigenschaft selbst angegebene Zugriffsebene. Weitere Informationen finden Sie unter Property-Anweisung.
Datentyp
Der Datentyp und die Hauptzugriffsebene einer Eigenschaft werden in der Property
-Anweisung definiert, nicht in den Eigenschaftsprozeduren. Eine Eigenschaft kann nur einen Datentyp aufweisen. Sie können z. B. keine Eigenschaft definieren, die einen Decimal
-Wert speichert, aber einen Double
-Wert abruft.
Zugriffsebene
Sie können jedoch eine Hauptzugriffsebene für eine Eigenschaft definieren und die Zugriffsebene in einer der zugehörigen Eigenschaftsprozeduren weiter einschränken. Sie können z. B. eine Public
-Eigenschaft und dann eine Private Set
-Prozedur definieren. Die Get
-Prozedur bleibt Public
. Sie können die Zugriffsebene nur in einer der Prozeduren einer Eigenschaft ändern, und Sie können sie nur restriktiver als die Hauptzugriffsebene gestalten. Weitere Informationen finden Sie unter Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen.
Parameterdeklaration
Sie deklarieren jeden Parameter auf die gleiche Weise wie bei Unterprozeduren, mit dem Unterschied, dass der Übergabemechanismus ByVal
sein muss.
Die Syntax für jeden Parameter in der Parameterliste lautet wie folgt:
[Optional] ByVal [ParamArray] parametername As datatype
Wenn der Parameter optional ist, müssen Sie auch einen Standardwert als Teil der Deklaration angeben. Die Syntax zum Angeben eines Standardwerts lautet wie folgt:
Optional ByVal parametername As datatype = defaultvalue
Eigenschaftswert
In einer Get
-Prozedur wird der Rückgabewert als Wert der Eigenschaft an den aufrufenden Ausdruck übergeben.
In einer Set
-Prozedur wird der neue Eigenschaftswert an den Parameter der Set
-Anweisung übergeben. Wenn Sie einen Parameter explizit deklarieren, müssen Sie ihn mit demselben Datentyp wie die Eigenschaft deklarieren. Wenn Sie keinen Parameter deklarieren, verwendet der Compiler den impliziten Parameter Value
, um den neuen Wert darzustellen, der der Eigenschaft zugewiesen werden soll.
Aufrufen der Syntax
Sie rufen implizit eine Eigenschaftsprozedur auf, indem Sie auf die Eigenschaft verweisen. Sie verwenden den Namen der Eigenschaft auf die gleiche Weise wie den Namen einer Variablen, mit der Ausnahme, dass Sie Werte für alle Argumente angeben müssen, die nicht optional sind, und dass Sie die Argumentliste in Klammern einschließen müssen. Wenn keine Argumente angegeben werden, können Sie optional die Klammern 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)
Abbildung der Deklaration und des Aufrufs
Die folgende Eigenschaft speichert einen vollständigen Namen als zwei Bestandteile, den Vornamen und den Nachnamen. Wenn der aufrufende Code fullName
liest, kombiniert die Get
-Prozedur die beiden Namensbestandteile und gibt den vollständigen Namen zurück. Wenn der aufrufende Code einen neuen vollständigen Namen zuweist, versucht die Set
-Prozedur, ihn in zwei Namensbestandteile zu unterteilen. Wenn kein Leerzeichen gefunden wird, wird alles 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
Das folgende Beispiel zeigt typische Aufrufe der Eigenschaftsprozeduren von fullName
.
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Weitere Informationen
- Vorgehensweisen
- Function-Prozeduren
- Operatorprozeduren
- Parameter und Argumente von Prozeduren
- Unterschiede zwischen Eigenschaften und Variablen in Visual Basic
- Vorgehensweise: Erstellen einer Eigenschaft
- Vorgehensweise: Aufrufen einer Eigenschaftenprozedur
- Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic
- Vorgehensweise: Ablegen eines Werts in eine Eigenschaft
- Vorgehensweise: Abrufen eines Werts aus einer Eigenschaft