Heim >Backend-Entwicklung >C++ >Wie kann ich während einer C#-foreach-Schleife effizient Elemente zu einer Liste hinzufügen?
foreach
Schleifen in C#: Best PracticesWährend C# .NET 4.0 und spätere Versionen keine Ausnahmen auslösen, wenn Enumerables innerhalb von foreach
-Schleifen geändert werden, kann das direkte Hinzufügen von Elementen innerhalb der Schleife zu unvorhersehbarem Verhalten führen. In diesem Artikel werden effiziente und zuverlässige Methoden zum Hinzufügen von Elementen zu einer Liste während der Iteration untersucht.
Der übliche Ansatz, einen temporären IList
als Puffer zu verwenden, funktioniert, ist jedoch nicht immer die effizienteste oder eleganteste Lösung. Das Kernproblem ergibt sich aus der Unveränderlichkeit der Sammlungen, auf die über foreach
zugegriffen wird. Wie MSDN klarstellt: foreach
dient zum Abrufen von Daten; Vom Hinzufügen oder Entfernen von Elementen während der Iteration wird aufgrund möglicher Inkonsistenzen abgeraten.
Warum sollten direkte Änderungen in foreach
vermieden werden?
Die foreach
-Schleife durchläuft einen Schnappschuss des Sammlungsstatus zu Beginn der Schleife. Durch das Hinzufügen von Elementen wird die zugrunde liegende Sammlung direkt geändert, was möglicherweise dazu führt, dass der Iterator Elemente überspringt oder auf unerwartete Ausnahmen stößt.
Empfohlener Ansatz: Verwendung einer for
Schleife
Zum Hinzufügen oder Entfernen von Elementen während der Iteration bietet eine for
-Schleife die vorhersehbarste und effizienteste Lösung. Es bietet direkte Kontrolle über den Index und ermöglicht sichere Änderungen.
Gleichzeitige Sammlungen: Ein Sonderfall
Die Verwendung gleichzeitiger Sammlungen (wie ConcurrentBag
oder ConcurrentQueue
) ist eine Ausnahme. Diese Sammlungen sind für Thread-sichere Änderungen konzipiert und das Hinzufügen von Elementen während der Iteration ist möglicherweise zulässig. Dies sollte jedoch sorgfältig überlegt und nur verwendet werden, wenn die Thread-Sicherheit an erster Stelle steht.
Zusammenfassend lässt sich sagen, dass es in neueren C#-Versionen zwar technisch möglich ist, Elemente während einer foreach
-Schleife hinzuzufügen, es jedoch im Allgemeinen die beste Vorgehensweise ist, zu diesem Zweck eine for
-Schleife zu verwenden, um die Klarheit und Effizienz des Codes aufrechtzuerhalten und unerwartete Ergebnisse zu vermeiden. Gleichzeitige Sammlungen bieten eine Alternative für bestimmte Multithread-Szenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich während einer C#-foreach-Schleife effizient Elemente zu einer Liste hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!