foreach
リストを安全に変更しますC#/.NET 4.0 では、foreach
ループ中に例外が発生することなく列挙可能なオブジェクトを変更できます。 Paul Jackson のブログ投稿でこれについて詳しく説明しています。
しかし、一般的な疑問が生じます。foreach
ループ内、特にネストされた foreach
シナリオでリストを変更する最良の方法は何ですか?
伝統的に、IList
は、外側の foreach
ループが終了するまで変更を蓄積するためのキャッシュまたはバッファーとしてよく使用されます。しかし、もっと良い代替手段はあるのでしょうか?
foreach
ループ内で反復されるコレクションは設計上不変であることに注意することが重要です。 MSDN ドキュメントに記載されているように、foreach
は、予期しない副作用を防ぐためにソース コレクションを変更するのではなく、データにアクセスするように設計されています。
ソース コレクションに項目を追加または削除する必要がある場合は、代わりに for
ループを使用することをお勧めします。これにより、コレクションに対する予測可能かつ制御された変更が保証されます。
Poko によってリンクされているブログ投稿は、この制限が C#/.NET 4.0 で導入された同時コレクションには適用されない可能性があることを示唆しています。
以上がNested `foreach`ループ内のリストをC#で安全に変更する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。