Laden...

IndexOutOfRangeException in Array

Erstellt von toxic vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.164 Views
Thema geschlossen
T
toxic Themenstarter:in
64 Beiträge seit 2010
vor 8 Jahren
IndexOutOfRangeException in Array

Hi ich habe ein ganz merkwürdiges Verhalten.

Ich prüfe mit einer if-Abfrage die Länge eines Arrays:


                    if (data.Length < index + 2) return 0;
                    return (data[index + 2] + data[index + 1] + data[index + 0]) / 3;

data.Length = 13484600
index = 1348598 + 2 = 13484600

Bei den Werten sollte er eigentlich return 0 zurück geben, aber geht einfach darüber hinweg...!
Macht .NET da einfach nen Rundungsfehler oder Ungenauigkeit?! Habe es jetzt schon auf 2 Rechner getestet.

Anbei noch ein Screenshot, nicht das ihr denkt ich spinne.
Wenn ich ide "≤" Abfragen würde, wär es ja klar...aber so?!

1.040 Beiträge seit 2007
vor 8 Jahren

Du gibst nur dann 0 zurück, wenn es KLEINER als Index + 2 ist.

EDIT:
Du bist doch schon auf dem richtigen Weg mit '≤'. 😉
Ansonsten: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

2.207 Beiträge seit 2011
vor 8 Jahren

Das Verhalten ist doch völlig korrekt?!

Wenn data.length KLEINER als index + 2 ist. Bei dir ists gleich...somit ist die Bedingung nicht wahr und er geht weiter...

189 Beiträge seit 2014
vor 8 Jahren

Du bist mit Array-Länge und größtem Index durcheinander gekommen:


array.MaxIndex == array.Length - 1

T
toxic Themenstarter:in
64 Beiträge seit 2010
vor 8 Jahren

Danke! manchmal sieht man den Baum vor lauter Wald nicht 😉

Hinweis von Abt vor 8 Jahren

Aufgrund [Hinweis] Wie poste ich richtig? Punkt 1 auch zu.

Thema geschlossen