首頁 >後端開發 >C++ >如何在 C# `foreach` 循環期間有效地將項目新增至清單?

如何在 C# `foreach` 循環期間有效地將項目新增至清單?

Linda Hamilton
Linda Hamilton原創
2025-01-27 13:26:09960瀏覽

How Can I Efficiently Add Items to a List During a C# `foreach` Loop?

> C#中的foreach循環中的修改列表:最佳實踐

> c#.net 4.0及以後的版本在修改foreach循環中的枚舉時不會引發異常,但直接在循環中添加項目可能會導致無法預測的行為。 本文探討了在迭代期間將項目添加到列表中的高效且可靠的方法。

>

使用臨時IList作為緩衝區的常見方法,但並不總是最有效或最優雅的解決方案。 核心問題源自於透過foreach存取的收藏的不變性。 正如MSDN澄清的那樣:foreach是為檢索資料而設計的;由於潛在的不一致而不建議您在迭代過程中添加或刪除元素。

>為什麼避免在foreach>循環在循環開始時在集合狀態的快照上迭代。 新增項目直接修改了基礎集合,可能導致迭代器跳過元素或遇到意外的異常。

建議方法:使用foreachloop

> for>用於在迭代時新增或刪除項目,a循環提供了最可預測,最有效的解決方案。 它提供了對索引的直接控制並允許安全修改。

>

for>併發收藏:特殊情況

> 使用同時收集(例如

)是一個例外。這些集合設計用於線程安全的修改,並且在迭代過程中添加項目可能是允許的,但是應仔細考慮,並且僅在螺紋安全性至關重要時才使用。 >

> 總而言之,ConcurrentBag在技術上可以添加項目在新的C#版本中添加項目,但使用aConcurrentQueue循環以保持程式碼的清晰度,效率和避免意外結果是最好的做法。 並發收集為特定的多執行緒場景提供了替代方案。

以上是如何在 C# `foreach` 循環期間有效地將項目新增至清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn