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?!
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?
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...
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Du bist mit Array-Länge und größtem Index durcheinander gekommen:
array.MaxIndex == array.Length - 1
Danke! manchmal sieht man den Baum vor lauter Wald nicht 😉
Aufgrund [Hinweis] Wie poste ich richtig? Punkt 1 auch zu.