Heim > Backend-Entwicklung > C++ > Wie füge ich Elemente sicher zu einer Liste hinzu, während ich mit einer Foreach-Schleife in C# iteriere?

Wie füge ich Elemente sicher zu einer Liste hinzu, während ich mit einer Foreach-Schleife in C# iteriere?

Susan Sarandon
Freigeben: 2025-01-27 13:31:12
Original
389 Leute haben es durchsucht

How to Safely Add Items to a List While Iterating with a Foreach Loop in C#?

Ändern Sie die Liste innerhalb der foreach-Schleife in C#

In C#-Versionen vor 4.0 führte der Versuch, eine Liste innerhalb einer foreach-Schleife zu ändern, zu einer Ausnahme. In .NET 4.0 wird diese Einschränkung jedoch aufgehoben.

Frage:

Was ist angesichts des folgenden Codes der beste Weg, ein Element zu einer Liste von Elementen hinzuzufügen, während eine foreach-Schleife verwendet wird, um über das verschachtelte Enumerable zu iterieren?

<code class="language-csharp">foreach (var item in Enumerable)
{
    foreach (var item2 in item.Enumerable)
    {
        item.Add(new item2); // 这行代码有问题
    }
}</code>
Nach dem Login kopieren

Best Practices:

In foreach-Schleifen verwendete Sammlungen sind von Natur aus unveränderlich. Daher kann es während der Iteration nicht direkt geändert werden. Um die Liste sicher zu ändern, wird empfohlen, stattdessen eine herkömmliche for-Schleife zu verwenden.

Erklärung:

In der MSDN-Dokumentation heißt es, dass die foreach-Anweisung zum Durchlaufen einer Sammlung verwendet wird. Es fügt zwar nicht implizit Elemente zur Quellsammlung hinzu oder entfernt sie daraus, warnt aber auch davor, sich aufgrund möglicher Nebenwirkungen auf dieses Verhalten zu verlassen. Wenn Sie die Quellsammlung ändern müssen, empfiehlt sich die Verwendung einer for-Schleife.

Ausnahme für gleichzeitige Sammlung:

Der Blog-Beitrag von Paul Jackson, auf den in der Frage verwiesen wird, besagt, dass es in gleichzeitigen C#-Sammlungen zulässig ist, die Sammlung innerhalb einer foreach-Schleife zu ändern. Diese Ausnahme ergibt sich aus der Tatsache, dass gleichzeitige Sammlungen threadsicher sind und potenzielle Nebenwirkungen unterschiedlich behandeln. Daher gilt diese Regel nicht für gleichzeitige Sammlungen. Für normale Sammlungen wird weiterhin empfohlen, for-Schleifen zu verwenden, um mögliche Probleme zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie füge ich Elemente sicher zu einer Liste hinzu, während ich mit einer Foreach-Schleife in C# iteriere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage