ここで説明されているように、LINQ での遅延実行を理解しています: LINQ での遅延実行の利点は何ですか?
ただし、遅延実行は、特にマルチスレッド シナリオなどでバグにつながる可能性があります。ロックの外で共有コレクションに対して実行される評価。遅延評価を返すメソッドがいくつかのメソッド層の深さでネストされている場合、適切にロックするように覚えたり追跡したりするのは (少なくとも私にとっては) 非常に難しくなります。
無限シーケンス (フィボナッチなど) のような特殊なケースを省略し、コレクションのフィルタリングが完了したと見なされる (つまり、消費者が結果をさらにフィルタリングする可能性は低い) と仮定すると、返されるときに「最良のアプローチ」と見なされるものメソッドからの IEnumerable のコレクション -- 既に評価または延期されている必要がありますか?
注:「最良のアプローチ」は、他の手段の効率/コードの安全性の観点から定義できます。応答で確認してください。コミュニティがこれをどのように行っているか知りたいです。
後続の質問: 結果が評価されるか遅延されるかをメソッド名で明示的に述べることに意味はありますか?