Freigeben über


Eigenschaften und Property-Prozeduren

Aktualisiert: November 2007

Sie können sowohl Eigenschaften als auch Felder verwenden, um Informationen in einem Objekt zu speichern. Felder sind lediglich öffentliche Variablen, während Eigenschaften Eigenschaftenprozeduren zur Steuerung der Festlegung bzw. Rückgabe von Werten verwenden. Eigenschaftenprozeduren sind innerhalb von Eigenschaftendefinitionen deklarierte Codeblöcke, die Ihnen die Ausführung von Code gestatten, wenn ein Eigenschaftenwert festgelegt oder abgerufen wird.

In Visual Basic gibt es zwei Arten von Eigenschaftenprozeduren: die Get-Eigenschaftenprozeduren zum Abrufen eines Eigenschaftenwerts und die Set-Eigenschaftenprozeduren zum Zuweisen eines Werts zu einer Eigenschaft. Eine Eigenschaft, die beispielsweise den Kontostand eines Bankkontos speichert, könnte Code in einer Get-Eigenschaftenprozedur verwenden, um Zinsen zu übermitteln und Kontoführungsgebühren zu berücksichtigen, bevor das verfügbare Guthaben zurückgegeben wird. Anschließend könnten Sie mit der Set-Eigenschaftenprozedur den Kontostand überprüfen und verhindern, dass er falsch aktualisiert wird. Zusammengefasst lässt sich sagen, dass Eigenschaftenprozeduren einem Objekt den Schutz und die Überprüfung der eigenen Daten ermöglichen.

Das folgende Codefragment vergleicht die Werteüberprüfung von Feldern und Eigenschaften.

Protected Sub TestFieldsAndProperties()
    ' Assume, for this example, that the only valid values for
    ' the field and property are numbers less than 10.
    Dim NewClass As New ThisClass

    ' Test data validation. 

    ' Works because there is no data validation.
    NewClass.ThisField = 36
    ' Will print 36.
    MsgBox("ThisField = " & NewClass.ThisField)

    ' The attempt to set the field to a value greater than 10 will silently fail.
    NewClass.ThisProperty = 36
    ' The next statement will print the old value of 0 instead.
    MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub

Public Class ThisClass
    ' Declare a field.
    Public ThisField As Integer
    ' Field used for Property Set operations.
    Private thisPropertyValue As Integer = 0
    ' Declare a property.
    Public Property ThisProperty() As Integer
        Get
            Return thisPropertyValue
        End Get
        Set(ByVal Value As Integer)
            ' Only allow Set operation for values less than 10.
            If Value < 10 Then thisPropertyValue = Value
        End Set
    End Property
End Class

Die TestFieldsAndProperties-Prozedur erstellt eine Instanz der Klasse und legt die Werte von Feldern und Eigenschaften fest bzw. ruft diese ab. Für dieses Beispiel wird angenommen, dass die einzigen gültigen Werte Zahlen unter 10 sind. Da es keine Möglichkeit zur Überprüfung der den Feldern zugewiesenen Werte gibt, kann der Wert des Felds auf 36 festgelegt werden. Die Eigenschaft führt jedoch nur Zuweisungen für Zahlen unter 10 aus, sodass der Versuch, den Wert auf 36 festzulegen, ignoriert wird.

Schreibgeschützte und lesegeschützte Eigenschaften

Die meisten Eigenschaften verfügen sowohl über die Get-Eigenschaftenprozedur als auch über die Set-Eigenschaftenprozedur, sodass Sie den intern gespeicherten Wert sowohl lesen als auch ändern können. Sie können jedoch den ReadOnly-Modifizierer bzw. den WriteOnly-Modifizierer verwenden, um das Ändern bzw. Lesen von Eigenschaften zu verhindern.

Schreibgeschützte Eigenschaften dürfen keine Set-Eigenschaftenprozeduren besitzen. Sie sind daher für Elemente sinnvoll, die Sie zwar verfügbar machen möchten, deren Änderung Sie jedoch nicht zulassen möchten. Sie können beispielsweise eine schreibgeschützte Eigenschaft verwenden, um die Prozessorgeschwindigkeit eines Computers auszugeben.

Lesegeschützte Eigenschaften können keine Get-Eigenschaftenprozeduren besitzen und eignen sich zum Konfigurieren von Objekten mit Daten, die nicht in dem Objekt gespeichert werden dürfen oder können. Eine lesegeschützte Eigenschaft könnte z. B. ein Kennwort enthalten und den Zustand des Objekts ändern, ohne dass das Kennwort gespeichert wird.

Hinweis:

Frühere Versionen von Visual Basic unterstützen Let-Eigenschaftenprozeduren, die beim Zuweisen von Objekten zu Eigenschaften verwendet werden. Mit Visual Basic werden Let-Eigenschaftenprozeduren überflüssig, da die Objektzuweisung wie andere Arten von Zuweisungen behandelt wird.

Siehe auch

Konzepte

Property-Prozeduren

Property-Prozeduren oder Felder

Referenz

Get-Anweisung

Set-Anweisung (Visual Basic)

ReadOnly (Visual Basic)

WriteOnly