Was ist der Unterschied zwischen for und foreach?
Was ist der große Unterschied zwischen for
und foreach
Schleifen?
In welche Szenarien können wir for
und nicht foreach
- und Umgekehrt.
Wäre es möglich zu zeigen, mit einem einfachen Programm?
Scheinen beide das gleiche zu mir. Ich kann nicht Sie zu unterscheiden.
Kurze Antwort:, wenn die iteration die Reihenfolge ist wichtig - sollten Sie
for
(zum Beispiel, wenn Sie möchten, Durchlaufen Sammlung rückwärts oder nur jedes zweite element), wenn die iteration die Reihenfolge ist nicht wichtig -foreach
. (Btw es ist möglich, verwenden Sie foreach
auch in Fällen, in denen iteration die Reihenfolge wichtig ist - in diesem Fall müssen Sie re-konstruieren Sammlung. Aber dies beeinträchtigt die Programm-perfomance)InformationsquelleAutor Chandru A | 2012-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
einen
for
- Schleife ist ein Konstrukt, das sagt "diese operation durchzuführen n. mal".einen
foreach
- Schleife ist ein Konstrukt, das sagt "führen Sie diese operation gegen jeder Wert/Objekt in dieser IEnumerable"for
ist nicht wirklich "n. mal", sondern eher "solange diese Bedingung erfüllt ist", das ist oft ein einfacher Zähler zu überprüfen. Und braucht man eigentlich nichtIEnumerable
fürforeach
, aber in der Tat: es ist semantisch eine "fetch jedes Element in turn" - API.Natürlich hast du Recht - aber in den meisten Fällen die genauere definition, die Sie geben, ist, wie die meisten Menschen neigen dazu zu denken, der eine do/while-Schleife.
Hinzufügen, dass die for-Schleife löst einen bestimmten sequenziellen Reihenfolge, ausgedrückt in der Schleife index-Variablen. Foreach ist weniger gebunden, um die Sequenz, weil es keine index-Variablen. Macht einen großen Unterschied für Parallelität.
InformationsquelleAutor Dave Bish
Können Sie
foreach
wenn das Objekt, das Sie möchten, Durchlaufen Sie implementiert dieIEnumerable
- Schnittstelle. Sie benötigenfor
wenn Sie Zugriff auf das Objekt nur die durch den index.IEnumerable
Schnittstelle ist nicht Voraussetzung fürforeach
ist, aber ziemlich viel ;pIm Allgemeinen, jede Schnittstelle bietet eine
Current
Eigenschaft und eineMoveNext
Methode wäre genug, rechts? Sollten die gleichen technischen Gegebenheiten wie bei der re-Implementierung von LINQ oder Aufgabe von Jon Skeet?InformationsquelleAutor Femaref
Werde ich tryto beantworten Sie diese in einem allgemeineren Ansatz:
foreach
wird verwendet, um die Iteration über jedes element einer gegebenen Menge oder Liste (alles, was die UmsetzungIEnumerable
) in einer vordefinierten Art und Weise. Sie können keinen Einfluss auf die genaue Reihenfolge (eine andere als Einträge für das überspringen oder Abbruch der gesamten Schleife), wie bestimmt durch den container.for
ist nur eine andere Art zu schreiben eine Schleife, die code ausgeführt, bevor die Schleife eingeben, und einmal nach jeder iteration. Es ist in der Regel verwendet, um eine Schleife durch code eine bestimmte Anzahl von Zeiten. Im Gegensatz zuforeach
hier sind Sie in der Lage, Einfluss auf die aktuelle position.Wenn dies möglich und sinnvoll ist, verwenden Sie immer
foreach
eher alsfor
(vorausgesetzt es gibt einige array-index). Abhängig von der internen Daten-organisationforeach
kann sehr viel schneller sein als mitfor
mit einem index (esp. bei der Verwendung von verketteten Listen).InformationsquelleAutor Mario
Alle Gaben Sie die richtige Antwort hinsichtlich der foreach-Schleife, D. H. es ist ein Weg, um eine Schleife durch die Elemente etwas Implementierung von IEnumerable.
Auf der anderen Seite, ist viel flexibler als das, was gezeigt in den anderen Antworten. In der Tat, für verwendet wird, führt einen block von Anweisungen, solange eine angegebene Bedingung true ist.
Aus der Microsoft-Dokumentation:
Initialisierung
Erforderlich. Einen Ausdruck. Dieser Ausdruck wird nur einmal ausgeführt, bevor die Schleife ausgeführt wird.
test
Erforderlich. Ein boolescher Ausdruck. Wenn test wahr ist, wird statement ausgeführt. Wenn testen wenn false, wird die Schleife beendet.
Inkrement
Erforderlich. Einen Ausdruck. Der Inkrement-Ausdruck ausgeführt wird am Ende jeder Durchlauf durch die Schleife.
Anweisung
Optional ist. Anweisung wird ausgeführt, wenn test wahr ist. Kann eine zusammengesetzte Anweisung.
Dies bedeutet, dass Sie können verwenden Sie es in vielen verschiedenen Arten. Klassische Schule Beispiele sind die Summe der zahlen von 1 bis 10:
Aber Sie können es verwenden, um die Summe der zahlen in einem Array zu:
(dies hätte man mit einer foreach-Schleife, auch):
Aber Sie können es verwenden, für die Summe der geraden zahlen von 1 bis 10:
Und Sie können sogar erfinden einige verrückte Sache wie diese:
InformationsquelleAutor Francesco Baruchelli
for-Schleife:
Ex1:-
foreach-Anweisung:
Ex2:-
InformationsquelleAutor kallol
foreach ist nützlich, wenn Sie eine array-oder andere IEnumerable-Auflistung von Daten. aber für die kann verwendet werden, für den Zugriff auf Elemente eines Arrays zugegriffen werden kann, indem deren index.
InformationsquelleAutor Maziar Aboualizadeh Behbahani
Einer for-Schleife ist nützlich, wenn Sie einen Hinweis oder Bestimmung, im Voraus, wie oft Sie möchten, eine Schleife zu laufen. Als Beispiel, wenn Sie brauchen, um einen Prozess durchführen, der für jeden Tag der Woche, wissen Sie, Sie wollen 7 Schlaufen.
Einer foreach-Schleife ist, wenn Sie möchten, wiederholen Sie die Prozess für alle Teile einer collection oder einem array, aber es ist nicht wichtig, speziell, wie oft die Schleife ausgeführt wird. Als ein Beispiel, werden Sie die Formatierung einer Liste der Lieblings-Bücher für die Nutzer. Jeder Benutzer kann eine andere Anzahl von Büchern, oder keine, und wir wissen nicht wirklich, wie viele es ist, wir wollen einfach nur die Schleife zu handeln, um auf alle von Ihnen.
InformationsquelleAutor colonelclick
foreach ist fast äquivalent zu :
in und um implemetn eine "foreach" - konforme Muster, die diese benötigen, um eine Klasse, die eine Methode GetEnumerator (), die ein Objekt zurück, das eine MoveNext() Methode, eine Reset() Methode und eine Aktuellen Eigenschaft.
In der Tat, Sie brauchen nicht zu implementieren weder IEnumerable noch IEnumerator.
InformationsquelleAutor polkduran
Es hängt davon ab, was Sie tun, und was Sie brauchen.
Wenn Sie das Durchlaufen einer Sammlung von Elementen, und kümmern sich nicht um die index-Werte dann foreach bequemer ist, einfacher zu schreiben und sicherer: Sie können nicht die Anzahl der Elemente falsch ist.
Wenn Sie brauchen, um zu verarbeiten, jedes zweite Element in einer Kollektion zum Beispiel, oder Bearbeiten Sie Ionen der umgekehrten Reihenfolge, dann eine for-Schleife ist die einzige praktische Art und Weise.
Die größten Unterschiede sind, dass mit einer foreach-Schleife verarbeitet eine Instanz jedes element in einer Auflistung wiederum, während einer for-Schleife arbeiten kann, mit Daten und beschränkt sich nicht auf Elemente aus der Sammlung allein. Dies bedeutet, dass eine for-Schleife kann ändern eine Sammlung - was ist illegal und wird einen Fehler verursachen in einer foreach-Schleife.
Für mehr Details, siehe MSDN : foreach und für
InformationsquelleAutor RDeveloper
Den großen Unterschied zwischen der for-und foreach-Schleife in c# verstehen wir, durch seine Arbeit:
Die for-Schleife:
Die foreach-Schleife:
Im Fall der foreach-Schleife die variable der Schleife, während derselbe sein wie der Typ der Werte in das array.
Die Foreach-Anweisung wiederholt eine Gruppe von embedded-Anweisungen für jedes element in einem array oder ein Objekt der Sammlung.
In der foreach-Schleife, die Sie nicht brauchen, um geben Sie die loop-Grenzen, minimum oder maximum.--->
hier können wir sagen, dass dies der Vorteil der for each-Schleife.
InformationsquelleAutor venkat subramaniyam
einfachen Unterschied zwischen for und foreach
InformationsquelleAutor sivasankar
Können Sie den foreach-für ein einfaches array wie
Und Sie können, wenn Sie ein 2D-array
for
- und/oderforeach
für diese beiden.InformationsquelleAutor noonana
foreach syntax ist schnell und einfach. für syntax ist ein wenig komplexer, aber auch flexibler.
foreach ist nützlich, wenn die Iteration alle Elemente in einer Sammlung. für ist nützlich, wenn die Iteration von Gesamt-oder einer Teilmenge von Elementen.
Den foreach iteration variable bietet jede Sammlung Element ist schreibgeschützt, deshalb können wir nicht ändern, die Elemente, wie Sie iterierbar sind. Mit der für syntax, können wir die Elemente ändern, wie gebraucht.
Bottom-line - Einsatz foreach zu schnell Durchlaufen aller Elemente in einer Auflistung. Verwenden für Iteration eine Teilmenge der Elemente der Sammlung oder zum ändern der Elemente, wie Sie iterierbar sind.
InformationsquelleAutor Saideep Chhetri
Die foreach-Anweisung wiederholt eine Gruppe von embedded-Anweisungen für jedes element in einem array oder einer collection-Objekt, implementiert das System.Sammlungen.IEnumerable oder System.Sammlungen.Generisches.IEnumerable-Schnittstelle. Die foreach-Anweisung wird verwendet, um zu iterieren durch die Sammlung, um die Informationen, die Sie wollen, aber können nicht benutzt werden, um hinzufügen oder entfernen von Elementen aus dem Quell-Sammlung zu vermeiden, unvorhersehbare Nebenwirkungen. Wenn Sie brauchen, um hinzuzufügen, oder entfernen Sie Elemente aus der Quelle, Sammlung, verwenden Sie eine for-Schleife.
InformationsquelleAutor sireesh