ホームページ >バックエンド開発 >C++ >C# の「foreach」ループ中にリストに項目を効率的に追加するにはどうすればよいですか?

C# の「foreach」ループ中にリストに項目を効率的に追加するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-27 13:26:09981ブラウズ

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

c#:ベストプラクティスのループ内のforeachループ内のリストの変更

c#.net 4.0以降のバージョンは、foreachループ内で列挙可能性を変更するときに例外をスローしませんが、ループ内にアイテムを直接追加すると、予測不可能な動作につながる可能性があります。 この記事では、反復中にアイテムをリストに追加するための効率的で信頼できる方法を探ります。 一時的なバッファーを使用するという一般的なアプローチは、常に最も効率的またはエレガントなソリューションではありません。 コアの問題は、

を介してアクセスされるコレクションの不変の性質に由来します。 MSDNが明確にすると、データを取得するために設計されています。潜在的な矛盾のために、反復中に要素を追加または削除することは阻止されます。

IListなぜforeachforeach ​​

で直接修正を避けるのか

ループのスタート時にコレクションの状態のスナップショットをループするループが繰り返されます。 アイテムを追加すると、基礎となるコレクションが直接変更され、潜在的にイテレーターが要素をスキップしたり、予期しない例外に遭遇したりします。 foreach推奨アプローチ:

loop

foreachの使用

反復中にアイテムを追加または削除するために、

ループは最も予測可能で効率的なソリューションを提供します。 インデックスを直接制御し、安全な修正を可能にします。 for同時コレクション:特別なケース

同時コレクションの使用(for

など)は例外です。これらのコレクションは、スレッドセーフの変更用に設計されており、反復中にアイテムを追加することは許容される場合がありますが、これは慎重に検討し、スレッドの安全が最重要である場合にのみ使用する必要があります。 要約すると、新しいC#バージョンで

ループ中にアイテムを追加することは技術的に可能ですが、一般に、この目的のためにループを使用して、コードの明確さ、効率性を維持し、予期しない結果を回避することがベストプラクティスです。 同時コレクションは、特定のマルチスレッドシナリオの代替手段を提供します

以上がC# の「foreach」ループ中にリストに項目を効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。