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
Deklarieren Sie die Eigenschaft auf die übliche Weise.Geben Sie das Shared-Schlüsselwort oder das Private-Schlüsselwort nicht an.
Fügen 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 wenigstens ein Argument annimmt.
Default Property myProperty(ByVal index As Integer) As String
So rufen Sie eine Standardeigenschaft auf
Deklarieren Sie eine Variable der enthaltenden Klasse oder des Strukturtyps.
Dim x As New class1(3)
Verwenden Sie den Variablennamen allein in einem Ausdruck, in den Sie normalerweise den Eigenschaftennamen einfügen würden.
MsgBox(x)
Geben Sie nach dem Variablennamen eine Argumentliste in runden Klammern ein.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 Zuweisungsanweisung.
MsgBox(x(1) & x(2) & x(3))
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"
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
Konzepte
Eigenschaftenprozeduren (Visual Basic)
Parameter und Argumente von Prozeduren (Visual Basic)
Unterschiede zwischen Eigenschaften und Variablen in Visual Basic