Was bedeutet das VB.NET UBound-Funktion EIGENTLICH tun, und warum tut sich die MSDN-Dokumentation zu sein scheinen ungenau?

Was bedeutet die UBound-Funktion eigentlich tun VB.NET und warum nicht in der MSDN-Dokumentation zu sein scheinen korrekt?

Laut der MSDN-Dokumentation (hier) die UBound-Funktion:

Gibt den höchsten verfügbaren index für die angegebene dimension eines Arrays.

Genauer gesagt:

Den höchsten Wert, den der index für die angegebene dimension enthalten kann. Wenn das Array hat nur ein element, UBound gibt 0 zurück. Wenn das Array hat keine Elemente, zum Beispiel, wenn es ist eine Zeichenfolge der Länge null, UBound gibt den Wert -1 zurück.

Aber in meinen Tests die (und einige Beispiele finden Sie in der Dokumentation) die UBound-Funktion gibt den Länge eines Arrays statt der höchsten verfügbaren index:

Was bedeutet das VB.NET UBound-Funktion EIGENTLICH tun, und warum tut sich die MSDN-Dokumentation zu sein scheinen ungenau?

Es ist auch wichtig zu beachten, dass UBound gibt 1 zurück, für ein Array mit einem element, das nicht 0, wie in der Dokumentation dargelegt.


In der Antwort auf eine Antwort:

Ich sehe jetzt, dass, wenn Sie ein array deklarieren und in vb.net erklären Sie die höchste gewünschte index NICHT die Länge des Arrays, wie in C#.

Verständnis, dass, jetzt verstehe ich, warum UBound wurde wieder 1 statt 0 für ein array deklariert Dim c(1). Da dieser array die höchste Feldindex 1 damit 2 Elemente. Weiter zu erklären, ein array mit nur einem element in vb.net es sollte erklärt werden, wie diese Dim b(0).

Was bedeutet das VB.NET UBound-Funktion EIGENTLICH tun, und warum tut sich die MSDN-Dokumentation zu sein scheinen ungenau?

  • Deine arrays sind wahrscheinlich beginnend bei index 1 statt bei index 0. Versuchen Sie tatsächlich Zugriff auf die Indizes, um sicher zu sein, dann versuchen Sie Dim a(0 to 99, 0 to 4, 0 to 3) as Byte.
  • UBound ist ein wapped-Methode von Array.GetUpperBound was gibt "ist der index des letzten Elements der angegebenen dimension in dem array".
  • Deinen screenshot mit dem Betreff "Antwort auf eine Antwort" ist falsch - code-Sie müssen angeben, dass ein index für jede dimension des Arrays, z.B. ersetzen a(UBound(a,1)) durch a(UBound(a,1), UBound(a,2), UBound(a,3))
  • Ihre Dim b(1) As Byte ist nicht ein array mit einem element. Es ist ein array mit 2 Elementen (Indizes 0 und 1). In VB, wenn Sie ein array deklarieren, geben Sie die Obere Grenze, nicht die Länge.
  • Ich aktualisierte den screenshot mit genauen code. Danke für die Hilfe mich klar, mein Verständnis von UBound und Arrays in VB.NET. Ich muss sagen, dass ich lieber das Verhalten der arrays im C-Familie von Sprachen mit denen ich gearbeitet habe.
InformationsquelleAutor AperioOculus | 2015-04-02
Schreibe einen Kommentar