Utilisation correcte de ‘yield return’
J’ai tendance à utiliser yield return lorsque je calcule l’élément suivant dans la liste (ou même le groupe suivant d’éléments).
En utilisant votre Version 2, vous devez avoir la liste complète avant de la retourner.
En utilisant yield return, vous n’avez vraiment besoin que de l’élément suivant avant de le retourner.
Entre autres choses, cela aide à répartir le coût computationnel des calculs complexes sur une période plus longue. Par exemple, si la liste est connectée à une interface graphique et que l’utilisateur ne va jamais à la dernière page, vous ne calculez jamais les derniers éléments de la liste.
Un autre cas où yield return est préférable est si l’IEnumerable représente un ensemble infini. Considérez la liste des nombres premiers, ou une liste infinie de nombres aléatoires. Vous ne pouvez jamais retourner l’IEnumerable complet d’un coup, donc vous utilisez yield return pour retourner la liste de manière incrémentale.
Dans votre exemple particulier, vous avez la liste complète des produits, donc j’utiliserais la Version 2.