Freigeben über


Empfehlung zur Aktualisierung: Auflösen von Standardeigenschaften ohne Parameter

Aktualisiert: November 2007

In Visual Basic 6.0 werden von vielen Objekten Standardeigenschaften offen gelegt, die als Programmierkurzform ausgelassen werden können. TextBox verfügt z. B. über die Standardeigenschaft Text. Daher kann anstelle von

MsgBox Form1.Text1.Text

folgende Kurzform verwendet werden:

MsgBox Form1.Text1

Die Standardeigenschaft wird aufgelöst, sobald der Code kompiliert wird. Zudem können Standardeigenschaften auch mit spät gebundenen Objekten verwendet werden, wie im folgenden Beispiel gezeigt wird:

Dim obj As Object
Set obj = Form1.Text1
MsgBox obj

In diesem spät gebundenen Beispiel wird die Standardeigenschaft zur Laufzeit aufgelöst. MsgBox zeigt den Wert der Standardeigenschaft von TextBox als Text1 an.

Standardeigenschaften ohne Parameter werden von Visual Basic 2008 nicht unterstützt. Infolgedessen ist auch diese Programmierkurzform nicht zulässig. Wenn ein Projekt aktualisiert wird, werden die Standardeigenschaften ohne Parameter von Visual Basic 2008 aufgelöst. Die spät gebundenen Verwendungen, die auf der Auflösung zur Laufzeit beruhen, können jedoch nicht automatisch aufgelöst werden. In solchen Fällen müssen Sie den Code selbst ändern. Eine weitere Komplikation ergibt sich dadurch, dass viele Bibliotheken Standardeigenschaften mithilfe einer Eigenschaft mit dem Namen _Default implementieren. _Default fungiert als Proxy und übergibt Aufrufe an die tatsächliche Standardeigenschaft. Sobald ein Projekt aktualisiert wird, werden daher einige Standardeigenschaften zu _Default aufgelöst. Der Code wird noch wie gewohnt funktionieren, aber weniger verständlich sein als Code, der explizit unter Verwendung der tatsächlichen Eigenschaft geschrieben ist. Versuchen Sie daher, Standardeigenschaften ohne Parameter in Ihrem Visual Basic 6.0-Code zu vermeiden. Anstelle von

Dim obj As Object
Set obj = Me.Text1
'BAD: Relying on default property
MsgBox obj
'BAD: Relying on default property
MsgBox Me.Text1

verwenden Sie:

Dim obj As TextBox
Set obj = Me.Text1
'GOOD: Default property is resolved
MsgBox obj.Text
'GOOD: Default property is resolved
MsgBox Me.Text1.Text

Im Gegensatz zu parameterlosen Standardeigenschaften werden in Visual Basic 2008 Standardeigenschaften mit Parametern unterstützt. Parametrisierte Standardeigenschaften verfügen immer über einen Index; so wird auch der Unterschied zwischen den beiden Typen deutlich. Als Beispiel hierfür dient die Standardeigenschaft des ADO-recordset: die Fields-Auflistung. Der Code

Dim rs As ADODB.Recordset
rs("CompanyName") = "SomeCompany"
rs!CompanyName = "SomeCompany"

stellt tatsächlich eine Kurzform für folgenden Code dar:

Dim rs As ADODB.Recordset
rs.Fields("CompanyName").Value = "SomeCompany"
rs.Fields!CompanyName.Value = "SomeCompany"

In diesem Fall ist die Fields-Eigenschaft parametrisiert, und daher ist die Verwendung in Visual Basic 2008 zulässig. Allerdings ist die Standardeigenschaft Value der Fields-Eigenschaft parameterlos, und daher sieht die korrekte Verwendung in Visual Basic 2008 wie folgt aus:

Dim rs As ADODB.Recordset
rs("CompanyName").Value = "SomeCompany"
rs!CompanyName.Value = "SomeCompany"

Dieses Beispiel und viele andere Standardeigenschaften werden aufgelöst, sobald ein Projekt aktualisiert wird. Daher entspricht deren Auflösen in Visual Basic 6.0 einfach guter Programmierpraxis. Sie sollten jedoch vermeiden, Standardeigenschaften mit den Datentypen Object und Variant zu verwenden, da diese nicht aufgelöst werden können und Sie den Code im aktualisierten Projekt selbst korrigieren müssen.

Siehe auch

Weitere Ressourcen

Sprachempfehlungen zum Aktualisieren