Maison >développement back-end >C++ >Comment obtenir le nombre d'éléments dans un IEnumerable sans itération ?
Récupérer le nombre d'articles de IEnumerable
Considérez un scénario dans lequel vous avez un IEnumerable
private IEnumerable<string> Tables { get { yield return "Foo"; yield return "Bar"; } }
Vous souhaitez parcourir cette collection et afficher la progression sous la forme "traitement #n sur #m". Existe-t-il un moyen de déterminer la valeur de m sans itérer avant l'itération principale ?
Comprendre IEnumerable
Par défaut, IEnumerable ne permet pas la récupération directe du nombre d'articles. Sa nature d'évaluation paresseuse signifie que les éléments ne sont récupérés qu'en cas de besoin. Ce choix de conception est fait pour optimiser l'utilisation des ressources en évitant l'allocation et le traitement inutiles de la mémoire.
Solution alternative : utiliser ICollection
Si vous avez besoin d'une connaissance immédiate du nombre d'éléments, une alternative à IEnumerable consiste à utiliser ICollection
public class TableCollection : ICollection<string> { // Implementation details omitted for brevity public int Count => 2; }
En convertissant votre collection Tables en ICollection
Conclusion
Alors que IEnumerable propose avantages de l'évaluation paresseuse, elle ne prend pas directement en charge la récupération du nombre d'éléments. Pour un accès immédiat au décompte, envisagez d'utiliser ICollection ou une structure de données plus appropriée qui fournit cette fonctionnalité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!