Problembehandlung bei Arrays (Visual Basic)

Auf dieser Seite werden einige allgemeine Probleme aufgelistet, die beim Arbeiten mit Arrays auftreten können.

Kompilierungsfehler beim Deklarieren und Initialisieren eines Arrays

Kompilierungsfehler können durch ein falsches Verständnis der Regeln für die Deklaration, Erstellung und Initialisierung von Arrays entstehen. Die häufigsten Ursachen für Fehler sind die folgenden:

  • Bereitstellen einer New Operator-Klausel nach dem Angeben von Dimensionslängen in der Arrayvariablendeklaration. Die folgenden Codezeilen zeigen ungültige Deklarationen dieses Typs.

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • Angabe von Dimensionslängen für mehr als das Array der obersten Ebene eines Jagged Arrays. Die folgende Codezeile zeigt eine ungültige Deklaration dieses Typs.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Auslassen des Schlüsselworts New beim Angeben der Elementwerte. Die folgende Codezeile zeigt eine ungültige Deklaration dieses Typs.

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • Bereitstellen einer New-Klausel ohne geschweifte Klammern ({}). Die folgenden Codezeilen zeigen ungültige Deklarationen dieses Typs.

    Dim INVALIDsingleDimByteArray() As Byte = New Byte()

    Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)

Zugreifen auf ein Array außerhalb der Grenzen

Beim Initialisieren eines Arrays wird jeder Dimension eine Ober- und eine Untergrenze zugewiesen. Jeder Zugriff auf ein Element des Arrays muss für jede Dimension einen gültigen Index oder Indexoperator angeben. Wenn sich ein Index unterhalb seiner Untergrenze oder oberhalb seiner Obergrenze befindet, wird eine IndexOutOfRangeException-Ausnahme ausgelöst. Der Compiler kann einen solchen Fehler nicht erkennen, sodass zur Laufzeit ein Fehler auftritt.

Bestimmen von Grenzen

Wenn eine andere Komponente ein Array an Ihren Code übergibt, z. B. als Prozedurargument, kennen Sie weder die Größe dieses Arrays noch die Länge seiner Dimensionen. Sie sollten immer die Obergrenze für jede Dimension eines Arrays bestimmen, bevor Sie versuchen, auf Elemente zuzugreifen. Wenn das Array mit anderen Mitteln als einer New-Klausel von Visual Basic erstellt wurde, kann die Untergrenze ein anderer Wert als 0 sein, und es ist am sichersten, diese Untergrenze ebenfalls zu bestimmen.

Angeben der Dimension

Achten Sie beim Bestimmen der Grenzen eines mehrdimensionalen Arrays darauf, wie Sie die Dimension angeben. Die dimension-Parameter der GetLowerBound- und GetUpperBound-Methoden basieren auf 0, während die Rank-Parameter der LBound- und UBound-Funktionen von Visual Basic auf 1 basieren.

Siehe auch