ホームページ > バックエンド開発 > C++ > C# で Foreach ループを反復中にリストに項目を安全に追加する方法

C# で Foreach ループを反復中にリストに項目を安全に追加する方法

Susan Sarandon
リリース: 2025-01-27 13:31:12
オリジナル
389 人が閲覧しました

How to Safely Add Items to a List While Iterating with a Foreach Loop in C#?

c#

のforeachループのリストを変更する 4.0以前のC#バージョンでは、foreachサイクルのリストを変更しようとすると、異常が発生します。ただし、.NET 4.0では、この制限がキャンセルされました。

質問:

次のコードを考慮して、ネストされた列挙を繰り返すためにforeachを使用する場合、プロジェクトをプロジェクトリストに追加する最良の方法は何ですか?

ベストプラクティス:

<code class="language-csharp">foreach (var item in Enumerable)
{
    foreach (var item2 in item.Enumerable)
    {
        item.Add(new item2); // 这行代码有问题
    }
}</code>
ログイン後にコピー
Foreachループで使用されるセットは設計できません。したがって、反復中に直接変更することはできません。リストを安全に変更するには、従来のループを使用することをお勧めします。

説明:

MSDNドキュメントは、Foreachステートメントが反復コレクションに使用されていることを指摘しています。ソースコレクションにアイテムを非表示または削除することはありませんが、潜在的な副作用があるため、この動作に依存しないことも警告しています。ソースコレクションを変更する必要がある場合、推奨される方法はループに使用することです。

同時コレクションは異常です:

問題で引用されているポールジャクソンのブログ記事には、セットがC#concurrentコレクションで許可されていると述べています。この例外は、同時コレクションの設定から導き出され、潜在的な副作用をさまざまな方法で処理します。 したがって、このルールは、同時コレクションには適していません。 通常のセットの場合、潜在的な問題を回避するために

サイクルを使用することをお勧めします。

以上がC# で Foreach ループを反復中にリストに項目を安全に追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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