c# for-Schleife neu starten
Also ich habe diese paar Zeilen code:
string[] newData = File.ReadAllLines(fileName)
int length = newData.Length;
for (int i = 0; i < length; i++)
{
if (Condition)
{
//do something with the first line
}
else
{
//restart the for loop BUT skip first line and start reading from the second
}
}
Habe ich versucht, mit "goto", aber wie Sie sehen können, wenn ich Anfang der for-Schleife wieder, Sie beginnen von der ersten Linie.
Also, wie kann ich starten Sie die loop-und die änderung der Startlinie(immer verschiedene Schlüssel aus dem array)?
Wenn die Bedingung wahr ist, wollen Sie nur das Lesen der ersten Zeile, und wenn die Bedingung falsch ist dann nur Lesen von Zeile 2 bis zum Ende?
Beachten Sie auch Ihre
bearbeitet
Wenn es wahr ist, ich mache einige Arbeit dort mit, dass die erste Zeile und dann mit dem zweiten usw.
Beachten Sie auch Ihre
i <= newData.Length
sollte <
.bearbeitet
Wenn es wahr ist, ich mache einige Arbeit dort mit, dass die erste Zeile und dann mit dem zweiten usw.
InformationsquelleAutor Kirev | 2012-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde argumentieren, dass ein
for loop
ist die falsche Art von Schleife hier, ist es nicht korrekt Ausdrücken die Absicht der Schleife, und würde definitiv empfehlen Sie mir, dass Sie nicht zu Durcheinander mit dem Zähler.Nein, es ist eine while-Schleife. Ja, Sie könnten es mit einer for-Schleife, aber ich halte es für ein code smell. Für bedeutet etwas zu tun eine Anzahl von Zeiten oder für eine Anzahl von Schritten. Das ist nicht das, was diese Schleife wird.
+1, cuz ich bin nicht taub! 🙂 for-Schleife, die zurück geht, ist eine schreckliche code.
Ich glaube nicht, dass Sie mich hören. Es spielt keine Rolle (und ich don ' T care) , die beiden Schleifen sind äquivalent, wenn jemand den code liest, wird er wahrscheinlich entlassen die
for
version als Schleife eine Anzahl von Zeiten, ohne zu fangen, begraben änderungi
. Ich würde behaupten es ist die scheinbare Einfachheit deswhile
Zustand ist, was macht es ein flag, um dem Leser zu überprüfen, dass das gar nicht so einfach, wie es aussieht. IMHO die Struktur in derfor
version zählt nicht für die Kniebeuge, wie Sie sind, umfor
- und it-Struktur durch das brechen der häufigste Anwendungsfall derfor
.Verdammt, ich wünschte, ich könnte upvote diese Bemerkung mehrmals!
InformationsquelleAutor Binary Worrier
Ändern Sie einfach die
index
von der for-Schleife:Beachten Sie, dass diese aussieht wie eine gute spaghetti-code... Ändern Sie den index einer for-Schleife in der Regel zeigen, dass Sie etwas falsch machen.
i = 1
wirklich?du hast Recht, behoben. danke.
Cheers, -1 aufgehoben.
Nicht bekommen, Sie letzter Kommentar. was meinst du?
+1 für die spaghetti. Argumentiert wurde, eine for-Schleife ist nicht passend hier, aber es scheint auf Taube Ohren 🙂
InformationsquelleAutor gdoron
Setzen Sie einfach
i = 0
in Ihremelse
Anweisung; diei++
im loop-Erklärung sollte dann1
und damit das überspringen der ersten Zeile.InformationsquelleAutor Rawling
Würden Sie nur reset
i
und Größe der ArraysInformationsquelleAutor Cole Johnson
i = 1
?InformationsquelleAutor Hiren Visavadiya