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
Deklarieren Sie die Eigenschaft auf die normale Weise. Geben Sie das
Shared
- oderPrivate
-Schlüsselwort nicht an.Schließen Sie das
Default
-Schlüsselwort in die Eigenschaftendeklaration ein.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
Deklarieren Sie eine Variable des enthaltenden Klassen- oder Strukturtyps.
Dim x As New class1(3)
Verwenden Sie den Variablennamen allein in einem Ausdruck, in dem Sie normalerweise den Eigenschaftennamen einschließen würden.
MsgBox(x)
Fügen Sie nach dem Variablennamen eine Argumentliste in Klammern hinzu. Eine Standardeigenschaft muss mindestens ein Argument annehmen.
MsgBox(x(1))
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))
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"
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
- Eigenschaftenprozeduren
- Parameter und Argumente von Prozeduren
- Property Statement
- Standard
- Unterschiede zwischen Eigenschaften und Variablen in Visual Basic
- Vorgehensweise: Erstellen einer Eigenschaft
- Vorgehensweise: Deklarieren einer Eigenschaft mit gemischten Zugriffsebenen
- Vorgehensweise: Aufrufen einer Eigenschaftenprozedur
- Vorgehensweise: Ablegen eines Werts in eine Eigenschaft
- Vorgehensweise: Abrufen eines Werts aus einer Eigenschaft