ホームページ > バックエンド開発 > C++ > Nested `foreach`ループ内のリストをC#で安全に変更する方法は?

Nested `foreach`ループ内のリストをC#で安全に変更する方法は?

Susan Sarandon
リリース: 2025-01-27 13:21:10
オリジナル
814 人が閲覧しました

How to Safely Modify Lists Inside Nested `foreach` Loops in C#?

C# のループ内の 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート