Freigeben über


Property-Prozeduren

Aktualisiert: November 2007

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 accesslevel 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.

Parameterdeklaration

Jeder Parameter wird auf die gleiche Weise deklariert wie bei Sub-Prozeduren, 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

Eigenschaftenwert

In Get-Prozeduren wird dem Aufrufausdruck der Rückgabewert als Wert der Eigenschaft bereitgestellt.

In Set-Prozeduren wird der neue Eigenschaftenwert 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

Gewusst wie: Aufrufen einer Eigenschaftenprozedur

Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic

Gewusst wie: Ablegen eines Werts in eine Eigenschaft

Gewusst wie: Abrufen eines Werts aus einer Eigenschaft

Konzepte

Prozeduren in Visual Basic

Function-Prozeduren

Operatorprozeduren

Parameter und Argumente von Prozeduren

Unterschiede zwischen Eigenschaften und Variablen in Visual Basic