Gewusst wie: Deklarieren und Aufrufen einer Standardeigenschaft in Visual Basic

Eine Standardeigenschaft ist eine Klassen- oder Struktureigenschaft, auf die Ihr Code zugreifen kann, ohne sie anzugeben. Wenn beim Aufrufen von Code eine Klasse oder Struktur benannt wird, aber keine Eigenschaft, und der Kontext den Zugriff auf eine Eigenschaft ermöglicht, löst Visual Basic den Zugriff auf die Standardeigenschaft dieser Klasse oder Struktur auf, sofern vorhanden.

Eine Klasse oder Struktur kann höchstens eine Standardeigenschaft aufweisen. Sie können jedoch eine Standardeigenschaft überladen und über mehrere Versionen verfügen.

Weitere Informationen finden Sie unter Standard.

So deklarieren Sie eine Standardeigenschaft

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

  2. Schließen 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 mindestens ein Argument akzeptiert.

    Default Property myProperty(ByVal index As Integer) As String
    

So rufen Sie eine Standardeigenschaft auf

  1. Deklarieren Sie eine Variable des enthaltenden Klassen- oder Strukturtyps.

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

    MsgBox(x)
    
  3. Fügen Sie nach dem Variablennamen eine Argumentliste in Klammern hinzu. 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 Zuordnungsanweisung.

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

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Sie können den Namen der Standardeigenschaft immer zusammen mit dem Variablennamen angeben, genau wie beim Zugriff auf jede andere Eigenschaft.

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

Beispiel 1

Im folgenden Beispiel wird eine Standardeigenschaft für eine 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

Beispiel 2

Im folgenden Beispiel wird veranschaulicht, wie die Standardeigenschaft myProperty für die Klasse class1 aufgerufen wird. Die drei Zuordnungsanweisungen 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

Der häufigste Anwendungsfall für Standardeigenschaften ist die Item[]-Eigenschaft für verschiedene Auflistungsklassen.

Stabile Programmierung

Standardeigenschaften können zu einer geringfügigen Verringerung der Quellcodezeichen führen, aber sie können das Lesen des Codes erschweren. Wenn der aufrufende Code nicht mit Ihrer Klasse oder Struktur vertraut ist, kann er beim Verweisen auf den Klassen- oder Strukturnamen nicht sicher sein, ob dieser Verweis auf die Klasse oder Struktur selbst oder eine Standardeigenschaft zugreift. Dies kann zu Compilerfehlern oder subtilen Laufzeitlogikfehlern führen.

Sie können die Wahrscheinlichkeit von Standardeigenschaftenfehlern etwas verringern, indem Sie immer die Option Strict-Anweisung verwenden, um die Compilertypüberprüfung auf On festzulegen.

Wenn Sie planen, eine vordefinierte Klasse oder Struktur in Ihrem Code zu verwenden, müssen Sie bestimmen, ob sie über eine Standardeigenschaft verfügt und wenn ja, wie ihr Name lautet.

Aufgrund dieser Nachteile sollten Sie erwägen, keine Standardeigenschaften zu definieren. Aus Gründen der Codelesbarkeit sollten Sie auch erwägen, immer auf alle Eigenschaften explizit zu verweisen, auch auf Standardeigenschaften.

Siehe auch