Property Statement

Deklariert den Namen einer Eigenschaft sowie die Eigenschaftenprozeduren zum Speichern und Abrufen des Werts der Eigenschaft.

Syntax

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

Bestandteile

  • attributelist

    Optional. Die Liste der Attribute, die für diese Eigenschaft oder die Get- oder Set-Prozedur gelten. Siehe Attributliste.

  • Default

    Optional. Gibt an, dass diese Eigenschaft die Standardeigenschaft für die Klasse oder Struktur ist, für die sie definiert ist. Standardeigenschaften müssen Parameter akzeptieren und können ohne Angabe des Eigenschaftennamens festgelegt und abgerufen werden. Wenn Sie die Eigenschaft als Default deklarieren, können Sie Private weder für die Eigenschaft noch für eine der zugehörigen Eigenschaftenprozeduren verwenden.

  • accessmodifier

    Optional für die Property-Anweisung und höchstens eine der Get- und Set-Anweisungen. Dabei kann es sich um eine der folgenden Methoden handeln:

    Siehe Access levels in Visual Basic.

  • propertymodifiers

    Optional. Dabei kann es sich um eine der folgenden Methoden handeln:

  • Shared

    Optional. Siehe Shared.

  • Shadows

    Optional. Siehe Shadows.

  • ReadOnly

    Optional. Siehe ReadOnly.

  • WriteOnly

    Optional. Weitere Informationen finden Sie unter WriteOnly.

  • Iterator

    Optional. Weitere Informationen finden Sie unter Iterator.

  • name

    Erforderlich. Der Name der Eigenschaft. Siehe Declared Element Names.

  • parameterlist

    Optional. Liste der Namen der lokalen Variablen, die die Parameter dieser Eigenschaft darstellen, und mögliche zusätzliche Parameter der Set-Prozedur. Siehe Parameterliste.

  • returntype

    Erforderlich, wenn Option StrictOn ist. Datentyp des von dieser Eigenschaft zurückgegebenen Werts.

  • Implements

    Optional. Gibt an, dass diese Eigenschaft mindestens eine Eigenschaft implementiert, die jeweils in einer Schnittstelle definiert ist, die durch die enthaltende Klasse oder Struktur dieser Eigenschaft implementiert wird. Weitere Informationen finden Sie unter Implements-Anweisung.

  • implementslist

    Erforderlich, wenn Implements angegeben wird. Liste der zu implementierenden Eigenschaften.

    implementedproperty [ , implementedproperty ... ]

    Jede implementedproperty weist folgende Syntax und Bestandteile auf:

    interface.definedname

    Teil Beschreibung
    interface Erforderlich. Name einer Schnittstelle, die von der Klasse oder Struktur dieser Eigenschaft implementiert wird.
    definedname Erforderlich. Name, durch den die Eigenschaft in interface definiert ist.
  • Get

    Optional. Erforderlich, wenn die Eigenschaft als ReadOnly markiert ist. Startet eine Get-Eigenschaftenprozedur, die verwendet wird, um den Wert der Eigenschaft zurückzugeben. Die Get-Anweisung wird nicht mit automatisch implementierten Eigenschaften verwendet.

  • statements

    Optional. Block von Anweisungen, die innerhalb der Get- oder Set-Prozedur ausgeführt werden sollen.

  • End Get

    Beendet die Get-Eigenschaftenprozedur.

  • Set

    Optional. Erforderlich, wenn die Eigenschaft als WriteOnly markiert ist. Startet eine Set-Eigenschaftenprozedur, die verwendet wird, um den Wert der Eigenschaft zu speichern. Die Set-Anweisung wird nicht mit automatisch implementierten Eigenschaften verwendet.

  • End Set

    Beendet die Set-Eigenschaftenprozedur.

  • End Property

    Beendet die Definition dieser Eigenschaft.

Bemerkungen

Die Property-Anweisung führt die Deklaration einer Eigenschaft ein. Eine Eigenschaft kann über eine Get-Prozedur (schreibgeschützt), eine Set-Prozedur (lesegeschützt) oder beides (Lese-/Schreibzugriff) verfügen. Sie können die Get- und Set-Prozedur auslassen, wenn Sie eine automatisch implementierte Eigenschaft verwenden. Weitere Informationen finden Sie unter Automatisch implementierte Eigenschaften.

Property kann nur auf Klassenebene verwendet werden. Der Deklarationskontext für eine Eigenschaft muss demnach eine Klasse, Struktur, ein Modul oder eine Schnittstelle sein und darf keine Quelldatei, kein Namespace, keine Prozedur und kein Block sein. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.

Standardmäßig verwenden Eigenschaften öffentlichen Zugriff. Sie können die Zugriffsebene einer Eigenschaft mit einem Zugriffsmodifizierer für die Property-Anweisung anpassen, und Sie können optional eine ihrer Eigenschaftenprozeduren mit einer restriktiveren Zugriffsebene versehen.

Visual Basic übergibt während der Eigenschaftenzuweisungen einen Parameter an die Set-Prozedur. Wenn Sie keinen Parameter für Set angeben, verwendet die integrierte Entwicklungsumgebung (IDE) einen impliziten Parameter namens value. Dieser Parameter enthält den Wert, der der Eigenschaft zugewiesen werden soll. Sie speichern diesen Wert in der Regel in einer privaten lokalen Variablen und geben ihn zurück, wenn die Get-Prozedur aufgerufen wird.

Regeln

  • Gemischte Zugriffsebenen. Wenn Sie eine Lese-/Schreibeigenschaft definieren, können Sie optional eine andere Zugriffsebene für die Get- oder Set-Prozedur angeben, aber nicht für beide. In diesem Fall muss die Zugriffsebene der Prozedur restriktiver sein als die Zugriffsebene der Eigenschaft. Wenn die Eigenschaft beispielsweise als Friend deklariert ist, können Sie die Set-Prozedur als Private deklarieren, aber nicht als Public.

    Wenn Sie eine ReadOnly- oder WriteOnly-Eigenschaft definieren, stellt die einzelne Eigenschaftenprozedur (Get bzw Set) die gesamte Eigenschaft dar. Sie können keine andere Zugriffsebene für eine solche Prozedur deklarieren, da dadurch zwei Zugriffsebenen für die Eigenschaft festgelegt würden.

  • Rückgabetyp. Die Property-Anweisung kann den Datentyp des zurückgegebenen Werts deklarieren. Sie können einen beliebigen Datentyp oder den Namen einer Enumeration, Struktur, Klasse oder Schnittstelle angeben.

    Wenn Sie returntype nicht angeben, gibt die Eigenschaft Object zurück.

  • Implementierung. Wenn diese Eigenschaft das Implements-Schlüsselwort verwendet, muss die enthaltende Klasse oder Struktur über eine Implements-Anweisung verfügen, die unmittelbar nach der Class-Anweisung oder Structure-Anweisung folgt. Die Implements-Anweisung muss jede in implementslist angegebene Schnittstelle enthalten. Der Name, mit dem eine Schnittstelle Property (in definedname) definiert, muss jedoch nicht mit dem Namen dieser Eigenschaft (in name) identisch sein.

Verhalten

  • Rückgabe aus einer Eigenschaftenprozedur. Wenn die Get- oder Set-Prozedur an den aufrufenden Code zurückgegeben wird, wird die Ausführung mit der Anweisung fortgesetzt, die auf die Anweisung folgt, die sie aufgerufen hat.

    Die Exit Property- und Return-Anweisungen führen zum sofortigen Beenden einer Eigenschaftenprozedur. Eine beliebige Anzahl von Exit Property- und Return-Anweisungen kann an einer beliebigen Stelle in der Prozedur auftreten, und Sie können Exit Property- und Return-Anweisungen mischen.

  • Rückgabewert. Um einen Wert aus einer Get-Prozedur zurückzugeben, können Sie den Wert entweder dem Eigenschaftsnamen zuweisen oder ihn in eine Return-Anweisung einschließen. Im folgenden Beispiel wird der Rückgabewert dem Eigenschaftsnamen quoteForTheDay zugewiesen, und anschließend wird die Exit Property-Anweisung für die Rückgabe verwendet.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    Wenn Sie Exit Property verwenden, ohne name einen Wert zu zuweisen, gibt die Get-Prozedur den Standardwert für den Datentyp der Eigenschaft zurück.

    Die Return-Anweisung weist gleichzeitig den Rückgabewert der Get-Prozedur zu und beendet die Prozedur. Im folgenden Beispiel wird dies veranschaulicht.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Beispiel

Im folgenden Beispiel wird eine Eigenschaft in einer Klasse deklariert.

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property Prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

Siehe auch