C#:ベストプラクティスのループforeach
内のリストの変更
ループ内でリストを直接変更すると、予期しない動作につながる可能性があります。 C#/。ネット4.0以降のバージョンは、特定の状況下でいくつかの変更を許可しますが(ポールジャクソンが指定したように)、これは一般的には推奨されません。 foreach
ループで使用されるコレクションの固有の不変性は、MSDNによって文書化されているように、予測不可能な副作用を防ぐように設計されています。
一時的なバッファーとしてforeach
を使用するなどの古い方法は、効率が低く、エレガントではありません。
なぜIList
?
で変更を避けないのか
foreach
ループの内部ワーキングは、コレクションのコピー(またはイテレーター)を作成します。 反復中に元のコレクションを変更すると、ループが要素をスキップしたり、例外をスローしたりする可能性があります。
ループを使用foreach
ソースコレクションの変更を必要とするシナリオの場合、ループはより良い制御と予測可能性を提供します。 このアプローチは、リストのインデックスを直接操作し、for
。に関連する問題を回避します。
同時コレクション:例外forループ内での変更を許可していますが、これは専門的なケースです。 この例外は、同時アクセスのために設計されたこれらの特定のコレクションタイプにのみ適用されることを理解することが重要です。
foreach
ループを使用すると、コードの明確性、予測可能性、予期しないエラーの回避を確保するためのベストプラクティスのままです。
以上がC#の「foreach」ループ内のリストを安全に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。