Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic

Eine Standardeigenschaft ist eine Klassen- oder Struktureigenschaft, auf die der Code zugreifen kann, ohne dass die Eigenschaft angegeben wird.Wenn der Aufrufcode eine Klasse oder Struktur, nicht jedoch eine Eigenschaft angibt und der Kontext den Zugriff auf eine Eigenschaft zulässt, löst Visual Basic den Zugriff in die Standardeigenschaft dieser Klasse oder Struktur auf, falls eine solche Eigenschaft vorhanden ist.

Eine Klasse oder Struktur kann höchstens eine Standardeigenschaft haben.Sie können eine Standardeigenschaft jedoch überladen und mehrere Versionen davon verwenden.

Weitere Informationen finden Sie unter Default (Visual Basic).

So deklarieren Sie eine Standardeigenschaft

  1. Deklarieren Sie die Eigenschaft auf die übliche Weise.Geben Sie das Shared-Schlüsselwort oder das Private-Schlüsselwort nicht an.

  2. Fügen Sie das Default-Schlüsselwort in die Eigenschaftendeklaration ein.

  3. Geben Sie mindestens einen Parameter für die Eigenschaft an.Sie können keine Standardeigenschaft definieren, die nicht wenigstens ein Argument annimmt.

    Default Property myProperty(ByVal index As Integer) As String
    

So rufen Sie eine Standardeigenschaft auf

  1. Deklarieren Sie eine Variable der enthaltenden Klasse oder des Strukturtyps.

    Dim x As New class1(3)
    
  2. Verwenden Sie den Variablennamen allein in einem Ausdruck, in den Sie normalerweise den Eigenschaftennamen einfügen würden.

    MsgBox(x)
    
  3. Geben Sie nach dem Variablennamen eine Argumentliste in runden Klammern ein.Eine Standardeigenschaft muss mindestens ein Argument annehmen.

    MsgBox(x(1))
    
  4. Um den Wert der Standardeigenschaft abzurufen, verwenden Sie den Variablennamen mit einer Argumentliste in einem Ausdruck oder nach dem Gleichheitszeichen (=) in einer Zuweisungsanweisung.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Um den Wert der Standardeigenschaft festzulegen, verwenden Sie den Variablennamen (mit einer Argumentliste) auf der linken Seite einer Zuweisungsanweisung.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Ebenso wie beim Zugriff auf andere Eigenschaften können Sie den Namen der Standardeigenschaft stets zusammen mit dem Variablennamen angeben.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Beispiel

Im folgenden Beispiel wird eine Standardeigenschaft in einer Klasse deklariert.

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

Im folgenden Beispiel wird veranschaulicht, wie die myProperty-Standardeigenschaft in der class1-Klasse aufgerufen wird.Die drei Zuweisungsanweisungen speichern Werte in myProperty, und der MsgBox-Aufruf liest die Werte.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

Am häufigsten wird die Item-Eigenschaft in verschiedenen Auflistungsklassen als Standardeigenschaft verwendet.

Robuste Programmierung

Durch Standardeigenschaften wird zwar die Anzahl der Quellcodezeichen geringfügig verringert, der Code wird durch sie jedoch unter Umständen schlechter lesbar.Wenn dem Aufrufcode die Klasse oder die Struktur, auf die verwiesen wird, nicht bekannt sind, ist unsicher, ob durch diesen Verweis auf die Klasse bzw. die Struktur selbst oder auf eine Standardeigenschaft zugegriffen wird.Dies kann zu Compilerfehlern oder kleineren Laufzeitlogikfehlern führen.

Die Möglichkeit von Eigenschaftenfehlern lässt sich ein wenig reduzieren, wenn Sie stets die Option Strict-Anweisung verwenden, um die Compilertypüberprüfung auf On zu setzen.

Wenn Sie im Code eine vordefinierte Klasse oder Struktur verwenden möchten, müssen Sie festlegen, ob sie eine Standardeigenschaft besitzt. Ist dies der Fall, müssen Sie auch einen Namen für die Eigenschaft festlegen.

Aufgrund dieser Nachteile sollten Sie keine Standardeigenschaften definieren.Zur besseren Lesbarkeit des Codes sollten Sie zudem stets explizit auf alle Eigenschaften verweisen, auch auf Standardeigenschaften.

Siehe auch

Aufgaben

Gewusst wie: Erstellen einer Eigenschaft (Visual Basic)

Gewusst wie: Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen (Visual Basic)

Gewusst wie: Aufrufen einer Eigenschaftenprozedur (Visual Basic)

Gewusst wie: Ablegen eines Werts in eine Eigenschaft (Visual Basic)

Gewusst wie: Abrufen eines Werts aus einer Eigenschaft (Visual Basic)

Referenz

Property-Anweisung

Default (Visual Basic)

Konzepte

Eigenschaftenprozeduren (Visual Basic)

Parameter und Argumente von Prozeduren (Visual Basic)

Unterschiede zwischen Eigenschaften und Variablen in Visual Basic