IEnumerable の複数列挙の可能性に関する警告への対処
プログラミングでは、IEnumerable インスタンスが次の場合に「IEnumerable の複数列挙の可能性」という警告が発生します。メソッド内で複数回反復されます。この問題は、反復子に状態があり、後続の列挙で異なる結果が得られたり、例外がスローされる可能性があるために発生します。
提供されたサンプル コードでは、
public List<object> Foo(IEnumerable<object> objects) { // ... }
objects パラメーターは IEnumerable
代替ソリューション
提案されるソリューションは次のとおりです。
最適解決策
推奨される一連のアクションは、メソッドの特定の要件と呼び出し元の予期される動作によって異なります。
メソッドが複数回列挙できる固定コレクションを予期している場合は、パラメータを IList/ICollection として宣言することをお勧めします。これにより、呼び出し元に期待が明確に伝えられ、一度だけ列挙されると期待されている高価なオブジェクトを誤って渡すことがなくなります。
あるいは、メソッドが IEnumerable を受け入れる必要があり、複数の列挙が必要な場合は、次のようにすることもできます。メソッドの開始時に .ToList() 変換を実行します。ただし、潜在的なパフォーマンスへの影響を考慮して、このアプローチは慎重に使用する必要があります。
.NET には、追加/削除機能のないカウントおよびインデクサー アクセスを備えた列挙可能なコレクション用に特別に設計されたインターフェイスがないことに注意することが重要です。この問題を解決するには理想的です。
以上がC# で「IEnumerable が複数列挙される可能性があります」という警告に対処するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。