foreach und forschleifen in c#?

FouLou  12.12.2022, 11:05

Du solltest die fehlermeldung mit angeben. Und den Code der nicht Funktioniert. Nicht den Code der funktioniert.

anonym432132206 
Fragesteller
 12.12.2022, 11:12

Nurdie forschleife durch die foreachschleife ersetzen, Rest ist gleich

Fehlermeldung: Unhandled exception. System.IndexOutofRangeException: Index was outside the bounds of the array

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
if(zahlen[i]%3==0)

Wenn du eine Foreach nutzt musst du auch diese zeile hier entsprechend abändern.

Als beispiel: du hast das Array mit den Zahlen: 5 3 und 1

Dann gibt dir die foreach als erstes die 5 aus.

wenn du aber zahlen[5] aufrufen möchtest. Kriegste ne array out of bounds exception. Weil dein array ja nur 3 werte hat und du den sechsten abrufen wollen würdest. Was ja nicht geht.

stattdessen musst du halt einfach nur i%3 rechnen.

Als Tipp: nutzt keine bezeichner für iterationsvariablen in foreach schleifen. Also nicht i,k,l usw. Sondern gibt dem ding nen richtigen namen. Wie z.b. nCurrentInt. etc. Damit du weisst das es sich hier nicht um einen Index in einem array handelt. Sondern um eben einen konkreten wert.

Bei einer foreach Schleife setzt dir das Framework die Abbruchbedingung bzw. Schleifendauer automatisch, indem du die Liste oder das Array übergibst.

Dementsprechend müsste der Kopf der Schleife etwa so aussehen:

foreach(int zahl in zahlen)
{
  // "zahl" entspricht dem zahlen[i], nur ohne den Array-Zähler
}

Liebe Grüße, Knom

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾

Zu musst schon ein bisschen mehr anpassen als nur den schleifen Aufruf.

Nach dem foreach... Funktioniert zahlen[i] auch nicht mehr so richtig.

Nutze beim foreach lieber value bzw val statt i das für einen Zähler steht