Freigeben über


Empfehlung zur Aktualisierung: Vermeiden von Arrays und Zeichenfolgen fester Länge in benutzerdefinierten Typen

Aktualisiert: November 2007

Aufgrund der vorgenommenen Änderungen, die es ermöglichen, dass Arrays und Strukturen von Visual Basic 2008 (früher als benutzerdefinierte Typen bezeichnet) mit anderen Visual Studio .NET-Sprachen vollständig kompatibel sind, werden Zeichenfolgen fester Länge in der Sprache nicht mehr unterstützt. In den meisten Fällen stellt das kein Problem dar, da eine Kompatibilitätsklasse vorhanden ist, mit der das Verhalten von Zeichenfolgen fester Länge bereitgestellt wird. Daher wird der folgende Code:

Dim FixedLengthString As String * 100

auf folgenden Code aktualisiert:

Dim FixedLengthString As New VB6.FixedLengthString(100)

Durch Zeichenfolgen fester Länge wird jedoch ein Problem verursacht, wenn sie in Strukturen verwendet werden. Das Problem wird hervorgerufen, da die Klasse für die Zeichenfolge fester Länge nicht automatisch erstellt wird, wenn die Struktur erstellt wird. Arrays fester Größe werden ebenfalls nicht erstellt, wenn die Struktur erstellt wird.

Sobald Code aktualisiert wird, werden benutzerdefinierte Typen mit Zeichenfolgen fester Länge oder Arrays fester Größe in Strukturen konvertiert und mit einem Kommentar und der Aufforderung gekennzeichnet, die Zeichenfolge fester Länge oder das Array fester Größe zu initialisieren, bevor im Code auf die Struktur verwiesen wird. Diese Änderung kann jedoch vermieden werden, indem die benutzerdefinierten Typen von Visual Basic 6.0 geändert werden, damit Zeichenfolgen anstatt Zeichenfolgen fester Länge und nicht initialisierte Arrays anstatt Arrays fester Größe verwendet werden. Beispiel:

Private Type uType
    anArray(5) As Integer
    aFixedString As String * 100
End Type
Sub SomeFunction()
    Dim aVariable As uType
End Sub

kann folgendermaßen geändert werden:

Private Type uType
    anArray() As Integer
    aFixedString As String
End Type
Sub SomeFunction()
    Dim aVariable As uType
    ReDim aVariable.anArray(5) As Integer
    aVariable.aFixedString = String$(100, " ")
End Sub

Siehe auch

Weitere Ressourcen

Sprachempfehlungen zum Aktualisieren