foreach
ループ内のリストの変更c#.net 4.0以降のバージョンは、foreach
ループ内で列挙可能性を変更するときに例外をスローしませんが、ループ内にアイテムを直接追加すると、予測不可能な動作につながる可能性があります。 この記事では、反復中にアイテムをリストに追加するための効率的で信頼できる方法を探ります。
一時的なバッファーを使用するという一般的なアプローチは、常に最も効率的またはエレガントなソリューションではありません。 コアの問題は、
IList
なぜforeach
?foreach
ループのスタート時にコレクションの状態のスナップショットをループするループが繰り返されます。 アイテムを追加すると、基礎となるコレクションが直接変更され、潜在的にイテレーターが要素をスキップしたり、予期しない例外に遭遇したりします。
foreach
推奨アプローチ:
foreach
の使用
ループは最も予測可能で効率的なソリューションを提供します。 インデックスを直接制御し、安全な修正を可能にします。
for
同時コレクション:特別なケース
同時コレクションの使用(for
や
ループ中にアイテムを追加することは技術的に可能ですが、一般に、この目的のためにループを使用して、コードの明確さ、効率性を維持し、予期しない結果を回避することがベストプラクティスです。 同時コレクションは、特定のマルチスレッドシナリオの代替手段を提供します
以上がC# の「foreach」ループ中にリストに項目を効率的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。